我试图通过加入基于2列的行来简化数据框。现在,剩下的有点混乱了,有很多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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句