Pandas - 根据组和列值有效地连接行

时间:2017-02-05 08:15:06

标签: python pandas data-manipulation

假设我们有一个带结构的pandas数据帧: Id | number |seq| a | 1 | X | a | 3 | Z | b | 1 | P | b | 6 | G | b | 5 | C |

所需的结果是一个数据框,如下所示: Id |new_seq| a | XZ | b | PCG |

也就是说,new_seqseqId分组,并按照number列所示的顺序执行。

有效实施此操作的选项有哪些?

1 个答案:

答案 0 :(得分:6)

您可以将sort_valuesgroupbyapply join一起使用:

print (df.sort_values(['Id', 'number']))
  Id  number seq
0  a       1   X
1  a       3   Z
2  b       1   P
4  b       5   C
3  b       6   G

df = df.sort_values(['Id', 'number'])
       .groupby('Id', sort=False).seq
       .apply(''.join)
       .reset_index(name='new_seq')

print (df)
  Id new_seq
0  a      XZ
1  b     PCG