2014-03-03 76 views
0

我有一個數據框,我想合併某些行。我現在df看起來是這樣的:熊貓 - 結合具有類似數據的行

col1 | col2 | col3 | col4 | col5 
022 | 5000 | name1 | comedy | tag1 
022 | 4250 | name1 | comedy | tag2 
512 | 6570 | name2 | drama | tag44 
730 | 7640 | name3 | drama | tag 52 
730 | 4557 | name3 | drama | tag 53 

如果同時COL1和COL3的比賽,我要行結合起來,創造這樣的事情:

col1 | col2   | col3 | col4 | col5 
022 | (5000, 4250) | name1 | comedy | (tag1, tag2) 
512 | 6570   | name2 | drama | tag44 
730 | (7640, 4557) | name3 | drama | (tag 52, tag 53) 

df.groupby(["col1", "col3"]).groups似乎在告訴我哪行有重疊數據,但我很困惑,我該如何組合這些數據並像上面那樣顯示它。

回答

2

你可以這樣做:

>>> fn = lambda ts: set(ts) if len(ts.unique()) > 1 else ts.iloc[0] 
>>> df.groupby(['col1','col3'], as_index=False).aggregate(fn) 

    col1 col3    col2 col4     col5 
0 22 name1 set([5000, 4250]) comedy set([tag2, tag1]) 
1 512 name2    6570 drama    tag44 
2 730 name3 set([7640, 4557]) drama set([tag52, tag53]) 

[3 rows x 5 columns]