我希望通过将userID与列表匹配来在Dataframe中组合pandas行。每个都有1000多个用户ID和多个条目。
我希望每个用户都有一行。 我找到了一个与我想做的完全相反的线程,即:How to explode a list inside a Dataframe cell into separate rows 先谢谢你们。
对于包含字符串和数字的行,需要做些什么?
userID alcohol
U1001 No_Alcohol_Served 7.0
Wine-Beer 2.0
U1002 Full_Bar 1.0
No_Alcohol_Served 3.0
Wine-Beer 6.0
U1003 Full_Bar 2.0
No_Alcohol_Served 8.0
Wine-Beer 3.0
U1004 No_Alcohol_Served 4.0
Wine-Beer 4.0
我想说的是:
U1001 : No_Alcohol_served:7.0, Wine-Beer:2.0
U1002 : Full_Bar:1.0, No_Alcohol_served:3.0, Wine_beer:6.0
等等等等
答案 0 :(得分:1)
您可以尝试这样的事情:
df.groupby('userID').apply(lambda x: x['name'].tolist())
示例:强>
给出df
:
userID name
0 U1001 a
1 U1001 b
2 U1001 c
3 U1002 d
4 U1002 e
5 U1003 f
>>> df.groupby('userID').apply(lambda x: x['name'].tolist())
userID
U1001 [a, b, c]
U1002 [d, e]
U1003 [f]
dtype: object