Как выбрать все ненулевое значение из нескольких столбцов в Python Dataframe - PullRequest
0 голосов
/ 08 сентября 2018

У меня был DataFrame, как показано ниже:

       column-a         column-b      column-c
0          Nan             A              B
1           A              Nan            C
2           Nan            Nan            C
3           A              B              C

Я надеюсь создать новый столбец D для захвата всех значений, отличных от NULL, от столбца A до C:

        column d
0        A,B
1        A,C
2        C
3        A,B,C

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

После исправления nan s:

df = df.replace('Nan', np.nan)

собрать все ненулевые значения в каждой строке списка и объединить элементы списка.

df['column-d'] = df.apply(lambda x: ','.join(x[x.notnull()]), axis=1)
#0      A,B
#1      A,C
#2        C
#3    A,B,C

Удивительно, но это решение несколько быстрее, чем решение stack/groupby от Wen, по крайней мере, для опубликованного набора данных.

0 голосов
/ 08 сентября 2018

Вам нужно изменить 'Nan' на np.nan, затем использовать stack с groupby join

df=df.replace('Nan',np.nan)
df.stack().groupby(level=0).agg(','.join)
Out[570]: 
0      A,B
1      A,C
2        C
3    A,B,C
dtype: object

#df['column-d']= df.stack().groupby(level=0).agg(','.join)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...