我有一個包含以下資料的資料框:
df = pd.DataFrame({'col1': ['A', 'A', 'B', 'B', 'C', 'C'],
'col2': ['action1', 'action2', 'action1', 'action3', 'action1', 'action2']})
看起來像
col1, col2
A , action1
A , action2
B , action1
B , action3
C , action1
C , action2
現在因為 A 和 C 都有 action1 和 action2。將它們組合在一起。B 將是一個單獨的組。所以我想在下面生成一個資料框:
col1, col2
A, C, action1, action2
B , action1, action3
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
如果每個組的排序相同,則可以按每個連接列col2聚合:joincol1
df = df.groupby('col1')['col2'].agg(', '.join).reset_index()
df = df.groupby('col2')['col1'].agg(', '.join).reset_index()[['col1','col2']]
print (df)
col1 col2
0 A, C action1, action2
1 B action1, action3
或者,如果訂購應該不同,請使用frozenset:
df = df.groupby('col1')['col2'].agg(frozenset).reset_index()
df = (df.groupby('col2')['col1']
.agg(', '.join)
.rename(lambda x: ', '.join(x)).reset_index()[['col1','col2']])
print (df)
col1 col2
0 A, C action2, action1
1 B action1, action3
print (df)
col1 col2
0 A action1
1 A action2
2 B action1
3 B action3
4 C action2 <-changed order
5 C action1 <-changed order
df = df.groupby('col1')['col2'].agg(frozenset).reset_index()
df = (df.groupby('col2')['col1']
.agg(', '.join)
.rename(lambda x: ', '.join(x)).reset_index()[['col1','col2']])
print (df)
col1 col2
0 A, C action2, action1
1 B action1, action3
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/412465.html
標籤:
上一篇:兩列的條件累積總和
