Python Pandas-基于组和列值高效地合并行

Python Pandas-基于组和列值高效地合并行,python,pandas,data-manipulation,Python,Pandas,Data Manipulation,假设我们有一个具有以下结构的数据帧: Id |编号|序号| a | 1 | X| a | 3 | Z| b | 1 | P| b | 6 | G| b | 5 | C| 期望的结果是一个数据帧,它看起来像: Id |新|序号| a | XZ| b | PCG| 也就是说,new_seq列是按Id分组的seq,并遵循number列指示的顺序 有效执行此操作的选项有哪些?您可以与groupby和apply加入一起使用: print (df.sort_values(['Id', 'number

假设我们有一个具有以下结构的数据帧:

Id |编号|序号|
a | 1 | X|
a | 3 | Z|
b | 1 | P|
b | 6 | G|
b | 5 | C|

期望的结果是一个数据帧,它看起来像:

Id |新|序号|
a | XZ|
b | PCG|

也就是说,
new_seq
列是按
Id
分组的
seq
,并遵循
number
列指示的顺序

有效执行此操作的选项有哪些?

您可以与
groupby
apply
加入一起使用:

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
您可以与
groupby
apply
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