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