假设我们有一个带结构的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_seq
列seq
按Id
分组,并按照number
列所示的顺序执行。
有效实施此操作的选项有哪些?
答案 0 :(得分:6)
您可以将sort_values
与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