我在预处理数据时遇到了麻烦。我的数据看起来像
我想按一个表示用户的字段分组,称为“帐号”,我想创建一个新字段,该字段是每个帐号的“客户事件类型”所有值的串联。
我已经尝试过了:
df_by_accnum = df.groupby('Account Number')[['Customer Event Type']].agg(','.join).reset_index()
但是会导致所有列名被串联,而不是串联值(https://i.imgur.com/VR5JjC3.png)
我可以帮忙解决这个问题吗?谢谢
答案 0 :(得分:0)
通过尝试和错误,我发现这可能是由于客户事件类型列的类型造成的。我猜它可能包含 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...
希望有帮助。如果您找出这种现象的原因,请告诉我们。谢谢!