首页 > 解决方案 > 如何一次分组并连接多列中的多行?

问题描述

我想知道如何按单列分组并每行加入多个列字符串。

这是一个示例数据框:

df = pd.DataFrame(np.array([['a', 'a', 'b', 'b'], [1, 1, 2, 2], 
                            ['k', 'l', 'm', 'n']]).T, 
                  columns=['a', 'b', 'c'])
print(df)

    a   b   c
0   a   1   k
1   a   1   l
2   b   2   m
3   b   2   n

我试过类似的东西,

df.groupby(['b', 'a'])['c'].apply(','.join).reset_index()

    b   a   c
0   1   a   k,l
1   2   b   m,n

但这不是我需要的输出,

期望的输出:

    a   b    c
0   1   a,a  k,l
1   2   b,b  m,n

我怎样才能做到这一点?我需要一个可扩展的解决方案,因为我要处理数百万行。

标签: pythonpython-3.xpandas

解决方案


我认为您只需要按列分组b,然后在必要时为应用函数创建列列表GroupBy.agg

df1 = df.groupby('b')['a','c'].agg(','.join).reset_index()
#alternative if want join all columns without b
#df1 = df.groupby('b').agg(','.join).reset_index()
print (df1)
   b    a    c
0  1  a,a  k,l
1  2  b,b  m,n

推荐阅读