Muz*_*uzz 0 dataframe pandas 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
Run Code Online (Sandbox Code Playgroud)
我想按 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
Run Code Online (Sandbox Code Playgroud)
我可以按 ID 分组并返回连接的 CODE 字段,但我需要为多个字段执行此操作:
df = DATA.groupby('ID')['CODE'].apply(',' .join).reset_index(drop = False)
Run Code Online (Sandbox Code Playgroud)
这仅返回分组的 ID 字段和串联的 CODE 字段。如何将 groupby 扩展到多列?
非常感谢
如果要避免转换ID为字符串使用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
Run Code Online (Sandbox Code Playgroud)
如果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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
485 次 |
| 最近记录: |