我有一个数据框,我想组合某些行。我目前的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
似乎告诉我哪些行有重叠数据,但我对如何组合数据并将其显示如上所述感到困惑。
答案 0 :(得分: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]