python - 使用 groupby 作为用户 ID 并组合字符串
问题描述
我在预处理数据时遇到问题。我有看起来像的数据
我想按一个表示名为帐号的用户的字段进行分组,并且我想创建一个新字段,该字段是每个帐号的客户事件类型的所有值的串联。
我试过这个:
df_by_accnum = df.groupby('Account Number')[['Customer Event Type']].agg(','.join).reset_index()
但它会导致连接所有列名而不是 hte 值(https://i.imgur.com/VR5JjC3.png)
我能得到一些帮助解决这个问题吗?谢谢
解决方案
通过尝试和错误,我发现这可能是由于Customer Event Type列的类型。我猜它可能包含非字符串值,这是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...
希望能帮助到你。如果您找出这种行为的原因,请告诉我们。谢谢!
推荐阅读
- java - 错误 decrjavax.crypto.BadPaddingException:给定最终块未正确填充。如果在解密期间使用了错误的密钥,则可能会出现此类问题
- firebase-realtime-database - Firebase 路径无效:Firebase 路径不得包含“.”、“#”、“$”、“[”或“]”
- java - 在过滤器类中覆盖 doFilterInternal 方法时获取空令牌
- angular - 那叫什么?
- javascript - Vanilla JS ForEach 元素并分配升序变量
- asp.net - 如何在 asp.net core 3.1 中使用多个 Id 执行路由
- python-3.x - 从熊猫数据框中提取特定信息
- oracle-apex - 如何根据 Oracle Apex 表单中一个数字字段中的值创建多个字段?
- java - 如何解决 java.nio.file.AccessDeniedException 以读取 .sys 文件
- postgresql - 如何查询numrange字段的值?