我有資料框:
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
uj5u.com熱心網友回復:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/376297.html
標籤:Python 熊猫 数据框 pandas-groupby
上一篇:根據時間頻率和分組獲取整個資料框
