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