使用 groupby 作为用户 ID 并组合字符串

Using groupby for user id and combining strings

我在预处理数据时遇到问题。我的数据看起来像

我想按一个表示名为帐号的用户的字段进行分组,并且我想创建一个新字段,该字段是每个帐号的所有客户事件类型值的串联。

我试过这个:

df_by_accnum = df.groupby('Account Number')[['Customer Event Type']].agg(','.join).reset_index()

但它会导致所有列名被连接起来而不是 hte 值 (https://i.imgur.com/VR5JjC3.png)

在解决这个问题时我能得到一些帮助吗?谢谢

通过尝试和错误我发现这可能是由于列的类型 客户事件类型。我猜它可能包含非字符串值,join 假设,并且出于某种原因,使用了列名。

尝试创建一个新列,将 客户事件类型 转换为字符串并使用该列:

>>> d = {'Account Number': [1, 2, 3, 1], 'Customer Event Type': [1, 1, 2, 2]}
>>> df = pd.DataFrame(data=d)
>>> df['Customer Event Type str'] = df['Customer Event Type'].astype(str)
>>> df.groupby('Account Number')[['Customer Event Type str']].agg(','.join).reset_index()
   Account Number Customer Event Type str
0               1                     1,2
1               2                       1
2               3                       2

而使用数字列会产生:

>>> df.groupby('Account Number')[['Customer Event Type']].agg(','.join).reset_index()
   Account Number                                Customer Event Type
0               1  Account Number,Customer Event Type,Customer Ev...
1               2  Account Number,Customer Event Type,Customer Ev...
2               3  Account Number,Customer Event Type,Customer Ev...

希望对您有所帮助。如果您发现此行为的原因,请告诉我们。谢谢!