我有下面的代码,我试图将一列中的所有值合并到数据帧的一个单元格中的列表中,例如下面的示例“输出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']
答案 0 :(得分:1)
用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']