熊猫 - 用类似数据组合行

时间:2014-03-03 00:34:30

标签: python pandas

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

1 个答案:

答案 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]