我需要集中值以在第一行每列的第一个单元格中列出
我的数据框:
df = pd.DataFrame({
'A':['one','one','two'],
'B':[2,np.nan,2],
'C':['main','main','main']
})
print(df)
A B C
0 one 2.0 main
1 one NaN main
2 two 2.0 main
预期输出:
A B C
0 one,one,two 2.0,2.0 main,main,main
对于一列,这不是问题,因为我可以使用tolist()
但在这些情况下,我尝试使用:
df=df.apply(lambda x: ','.join(x.dropna().values.tolist()), axis=1)
从本主题:
用分隔符将单元格连接成一个字符串 熊猫蟒蛇 但在那里,它不是一个列表,而是一个字符串,无论如何我收到:TypeError: ('sequence item 1: expected str instance, float found', 'occurred at index 0')
您可以将列转换为字符串并连接:
df.agg(lambda x: ','.join(x.dropna().astype(str)))
输出:
A one,one,two
B 2.0,2.0
C main,main,main
dtype: object
要获取数据帧,您可以使用.to_frame().T
链接它:
df.agg(lambda x: ','.join(x.dropna().astype(str))).to_frame().T
给你
A B C
0 one,one,two 2.0,2.0 main,main,main