объединить значения столбца в список - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть код ниже, где я пытаюсь объединить все значения в столбце в список в одной ячейке кадра данных, как в примере «output df» ниже.У меня есть исходный фрейм данных, такой как фрейм данных df ниже.Этот код точно не выполняет то, что я хочу, и кажется немного неуклюжим.Кто-нибудь знает лучший способ сказать с пандами?

код:

corrLst=[df[df[x]!=''][x].tolist() for x in df.columns.tolist()]
corrdict=dict(zip(df.columns.tolist(),corrLst))

образец df:

field1  field2
'a' 'b'
    'c'
'd' 
'e' 'f'

выходной df:

field1  field2
['a','d','e'] ['b','c','f']

1 Ответ

0 голосов
/ 15 февраля 2019

Замените пробел на np.nan, затем выполните:

[sorted(list(set(i))) for i in df.ffill().values.T.tolist()]

В общем, просто выполните:

pd.DataFrame([[sorted(list(set(i))) for i in df.ffill().values.T.tolist()]],\
                                                           columns=df.columns)

      field1     field2
0  [a, d, e]  [b, c, f]

Или, чтобы сохранить первоначальный порядок списка,использование:

from collections import OrderedDict
pd.DataFrame([[list(OrderedDict.fromkeys(i)) for i in df.ffill().values.T.tolist()]],\
                                                            columns=df.columns)

            field1           field2
0  ['a', 'd', 'e']  ['b', 'c', 'f']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...