Python 从每组的后续行中扣除第一行值
我有一个数据帧,如:Python 从每组的后续行中扣除第一行值,python,python-3.x,pandas,dataframe,pandas-groupby,Python,Python 3.x,Pandas,Dataframe,Pandas Groupby,我有一个数据帧,如: SEQ_N FREQ VAL ABC 1 121 ABC 1 130 ABC 1 127 ABC 1 116 DEF 1 345 DEF 1 360 DEF 1 327 DEF 1 309 我想从每个组的后续行中减去第一行的值 结果: SEQ_N FREQ VAL RES ABC 1 121 0 ABC 1 130 9 ABC 1
SEQ_N FREQ VAL
ABC 1 121
ABC 1 130
ABC 1 127
ABC 1 116
DEF 1 345
DEF 1 360
DEF 1 327
DEF 1 309
我想从每个组的后续行中减去第一行的值
结果:
SEQ_N FREQ VAL RES
ABC 1 121 0
ABC 1 130 9
ABC 1 127 6
ABC 1 116 -5
DEF 1 345 0
DEF 1 360 15
DEF 1 327 -18
DEF 1 309 -36
用和减去列,以获得每组的第一个值,使其成为与原始值大小相同的系列
:
df['RES'] = df['VAL'].sub(df.groupby('SEQ_N')['VAL'].transform('first'))
print (df)
SEQ_N FREQ VAL RES
0 ABC 1 121 0
1 ABC 1 130 9
2 ABC 1 127 6
3 ABC 1 116 -5
4 DEF 1 345 0
5 DEF 1 360 15
6 DEF 1 327 -18
7 DEF 1 309 -36
transform在这里做什么?链接没有说much@urdearboy它将您调用的结果转换为组的系列,这里它是第一个值。您可以使用
print(df.groupby('SEQ_N')['VAL'].transform('first'))
:)@urderboy进行测试-也可以使用帮助答案。