pandas - Groupby并连接多列
问题描述
我有一个像这样的数据框:
ID CODE GROUP PIN
1 99 A 221
1 89 B 443
2 79 A 230
2 69 A 000
3 59 D 781
3 49 T 665
我想按 ID 列分组并连接所有其他以逗号分隔的字段,因此我得到如下输出:
ID CODE GROUP PIN
1 99,89 A,B 221,443
2 79,69 A,A 230,000
3 59,49 D,T 781,665
我可以按 ID 分组并返回串联的 CODE 字段,但我需要对多个字段执行此操作:
df = DATA.groupby('ID')['CODE'].apply(',' .join).reset_index(drop = False)
这仅返回分组的 ID 字段和串联的 CODE 字段。如何将 groupby 扩展到多列?
非常感谢
解决方案
如果要避免转换ID
为字符串 use DataFrame.set_index
,请将所有列转换为字符串并GroupBy.agg
分别用于处理每一列:
df = DATA.set_index('ID').astype(str).groupby('ID').agg(',' .join).reset_index()
print (df)
ID CODE GROUP PIN
0 1 99,89 A,B 221,443
1 2 79,69 A,A 230,0
2 3 59,49 D,T 781,665
print (df.dtypes)
ID int64
CODE object
GROUP object
PIN object
dtype: object
如果ID
是字符串或可能转换为字符串:
df = DATA.astype(str).groupby('ID').agg(',' .join).reset_index()
print (df)
ID CODE GROUP PIN
0 1 99,89 A,B 221,443
1 2 79,69 A,A 230,0
2 3 59,49 D,T 781,665
print (df.dtypes)
ID object
CODE object
GROUP object
PIN object
dtype: object
推荐阅读
- ios - ScrollViewDidScroll EXC_BREAKPOINT 仅在 iOS 13 上崩溃
- jupyter-notebook - 为什么 Jupyter Notebook 需要这么长时间才能加载?
- r - 如何在另一个向量R中找到一个向量中元素的索引
- django - Django 'NoneType' 对象没有属性 'amount'
- ios - iOS/Swift:如何混合多个 UIView
- javascript - webpack - ReferenceError: $ 未定义
- c - PIC32 UART:U1RXREG 寄存器从不包含除 0 以外的任何值
- installation - Xdebug 加载 C:\php\ext\php_xdebug.dll 失败
- safari - Safari 中的 ShadowRoot 处理
- amazon-web-services - 临时安全凭证 - 如何在给定角色名称和 AWS 账户 ID 的情况下获得访问权限?