计算满足条件的当前行和最新行之间的差异
Calculate difference between current row and latest row satisfying a condition
我有一个 pandas 数据框看起来像。
time value group
0 1 12 1
1 2 14 1
2 3 15 2
3 4 15 1
4 5 18 2
5 6 20 1
6 7 19 2
7 8 24 2
我知道要计算第 1 组和第 2 组之间的最新值的差值。
IE。在每一行中,我想查看第 1 组和第 2 组的最新值,并计算第 1 组的值 - 第 2 组的值。
在示例中,输出应如下所示
time value group diff
0 1 12 1 0
1 2 14 1 0
2 3 15 2 -1
3 4 15 1 0
4 5 18 2 -3
5 6 20 1 2
6 7 19 2 1
7 8 24 2 -4
到目前为止我能找到的唯一函数是 pd.diff() 但它不能满足我的需要。所以我真的很感激这里的一些帮助。谢谢!
可以先转发group
1和2的填充值,然后计算差值:
df['diff'] = df.value.where(df.group == 1).ffill() - df.value.where(df.group == 2).ffill()
df
time value group diff
0 1 12 1 NaN
1 2 14 1 NaN
2 3 15 2 -1.0
3 4 15 1 0.0
4 5 18 2 -3.0
5 6 20 1 2.0
6 7 19 2 1.0
7 8 24 2 -4.0
使用fillna
-- 如果需要填写df['diff'] = df['diff'].fillna(0)
.
我有一个 pandas 数据框看起来像。
time value group
0 1 12 1
1 2 14 1
2 3 15 2
3 4 15 1
4 5 18 2
5 6 20 1
6 7 19 2
7 8 24 2
我知道要计算第 1 组和第 2 组之间的最新值的差值。 IE。在每一行中,我想查看第 1 组和第 2 组的最新值,并计算第 1 组的值 - 第 2 组的值。
在示例中,输出应如下所示
time value group diff
0 1 12 1 0
1 2 14 1 0
2 3 15 2 -1
3 4 15 1 0
4 5 18 2 -3
5 6 20 1 2
6 7 19 2 1
7 8 24 2 -4
到目前为止我能找到的唯一函数是 pd.diff() 但它不能满足我的需要。所以我真的很感激这里的一些帮助。谢谢!
可以先转发group
1和2的填充值,然后计算差值:
df['diff'] = df.value.where(df.group == 1).ffill() - df.value.where(df.group == 2).ffill()
df
time value group diff
0 1 12 1 NaN
1 2 14 1 NaN
2 3 15 2 -1.0
3 4 15 1 0.0
4 5 18 2 -3.0
5 6 20 1 2.0
6 7 19 2 1.0
7 8 24 2 -4.0
使用fillna
-- 如果需要填写df['diff'] = df['diff'].fillna(0)
.