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
我有数据框:
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