从数据帧中的其他行减去行

2024-04-26 00:13:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用有其他值的行减去有一些值的行,假设我有一个有16行和两列的数据帧。我需要在0之后和之前的标志列中的前8和结束8的值差列


    flag    values
     0       456
     0       789
     8       56
     8       1
     8       0
     8       2
     8       74
     0       900
     0       45
     0       45
     8       85
     8       43
     8       4
     8       43
     8       90
     0       455

预期输出如下



    22 (end 8  value(74) - start 8 value(56))
    5  (end 8  value(90) - start 8 value(85))


Tags: 数据value标志startendflagvalues差列
1条回答
网友
1楼 · 发布于 2024-04-26 00:13:54

用途:

#compare 8 in flag column
m = df['flag'].eq(8)
#create consecutive groups and filter by mask
g = m.ne(m.shift()).cumsum()[m]

#aggregate last and first by groups
df = df['values'].groupby(g).agg(['last','first']).reset_index(drop=True)
#get difference
df['diff'] = df['last'] - df['first']
print (df)
   last  first  diff
0    74     56    18
1    90     85     5

相关问题 更多 >