Log4J: Как мне перенаправить OutputStream или Writer на записывающее устройство (я) регистратора?

Предположим, что в строке может быть больше одного значения, отличного от NaN. Тем не менее это должно работать.

In [43]: df['Combined_ID'] = df.apply(
                lambda x : ''.join([e for e in x if isinstance(e, basestring)]),
                      axis=1)

Для каждой строки извлекайте строковые элементы и присоединяйте их.

In [44]: df
Out[44]:
  ID_1 ID_2 ID_3 Combined_ID
0  abc  NaN  NaN         abc
1  NaN  def  NaN         def
2  NaN  NaN  ghi         ghi
3  NaN  NaN  jkl         jkl
4  NaN  mno  NaN         mno
5  pqr  NaN  NaN         pqr

Мне понравился ответ @ EdChum и выглядит более читаемым.

Интересно, что метод fillna('').sum(axis=1) является дорогостоящим для этих меньших данных.

In [45]: %timeit df.fillna('').sum(axis=1)
1000 loops, best of 3: 808 µs per loop

In [46]: %timeit df.apply(lambda x : ''.join([e for e in x if isinstance(e, basestring)]), axis=1)
1000 loops, best of 3: 285 µs per loop

Только для ['ID_1','ID_2','ID_3'] столбцов

df[['ID_1','ID_2','ID_3']].apply(lambda_function)
20
задан Perception 9 August 2011 в 12:33
поделиться