Pandas Groupby并连接多个列
我有这样一个数据帧:Pandas Groupby并连接多个列,pandas,dataframe,pandas-groupby,Pandas,Dataframe,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
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分组并返回连接的代码字段,但我需要对多个字段执行此操作:
df = DATA.groupby('ID')['CODE'].apply(',' .join).reset_index(drop = False)
这只返回分组ID字段和串联代码字段。如何将groupby扩展到多个列
非常感谢如果希望避免将
ID
转换为字符串使用,请将所有列转换为字符串,并分别用于处理每一列:
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