pandas 数据框列到单个单元格

pandas dataframe columns to a single cell

我有数据框:

df = A B l1 l2 l3
     1 1 2   3  4
     1 1 3   5  7
     1 1 1   2  9
     1 2 2   7  8

我想按 A,B 按列分组,并将这些值作为一个系列放在一个单元格中。 所以输出将是:

df = A B   l1      l2    l3
     1 1  2,3,1  3,5,2  4,7,9
     1 2   2       7      8

我该怎么做? (高效)

还有,没有ID列的解决方法是什么? 所以

df = l1 l2 l3
     2   3  4
     3   5  7
     1   2  9
     2   7  8

和输出:

df =  l1      l2    l3
     2,3,1,2  3,5,2,7  4,7,9,8

GroupBy.agg 与 lambda 函数一起使用,转换为字符串和 join:

df1 = df.groupby(['A','B']).agg(lambda x: ','.join(x.astype(str))).reset_index()
print (df1)
   A  B     l1     l2     l3
0  1  1  2,3,1  3,5,2  4,7,9
1  1  2      2      7      8

第二个:

df2 = df.astype(str).agg(','.join).to_frame().T
print (df2)
        l1       l2       l3
0  2,3,1,2  3,5,2,7  4,7,9,8

如果有字符串:

df1 = df.groupby(['A','B']).agg(','.join).reset_index()
df2 = df.agg(','.join).to_frame().T