我试图通过连接基于两列的行来简化数据框。现在,剩下的部分有点困惑,有很多 nan 值等。我将展示一个示例:
初始:
Name Sex Shoes Bike Car
0 John Male Specialised
1 John Male Bridgestone
2 Lucy Female BMW
3 John Male Vans
4 Lucy Female Nike
目标:
Name Sex Shoes Bike Car
0 John Male Vans Specialised, Bridgestone
1 Lucy Female Nike BMW
我应该使用什么功能?我不知道如何使用 groupby 和 .agg(','.join) 添加...
(上面的数据只是示例性的 - 我必须使用的数据有更多的行,其中多次出现同名,大约有 20 个“类别”列...另请注意,每一行都应该有字符串仅“类别”之一 - 鞋子/自行车/汽车等)
提前致谢!
最佳答案
假设空单元格为NaN(非空字符串),则以下将达到结果,
(df.set_index(['Name','Sex'])
.groupby(level=[0,1])
.apply(lambda x:x.apply(lambda y: ', '.join(y.dropna())))
.reset_index())
第二种方法,
(df.set_index(['Name','Sex'])
.stack()
.groupby(level=[0,1,2])
.apply(', '.join)
.unstack()
.reset_index()
关于python - pandas 将 rows/groupby 与分类数据和大量 nan 值连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58418334/