确保Pandas群体内数据始终减少的毕德式方法

yqyhoc1h  于 2022-09-21  发布在  其他
关注(0)|答案(2)|浏览(118)

我有一个数据集,如下所示

Id date     value
x1 01-01-22  46
x1 02-01-22  46
x1 03-01-22  45.8
....
x2 03-04-22  57
X2 03-04-22  62
....

随着时间的推移,value中的数字应该始终减少(或保持不变)。因此,对x2的下一次观测将失败。

如果值增加超过3%(因为可能有一些测量误差),那么添加一列1和0的最典型的方法是什么?在R,我只会用dplyr&groupby,我希望用Pandas的东西一样优雅。

  • 为清晰而编辑*:减少必须在ID内(如每项)。
c3frrgcw

c3frrgcw1#

我想这个应该可以了(编辑后我把减号翻过来了)(澄清后再次编辑)

def f(gdf):
    return ((gdf.value - gdf.value.shift())/gdf.value.shift()) > .03
df['flag'] = df.groupby('Id').apply(f).values
vfh0ocws

vfh0ocws2#

您具有pct_change

df['big_change'] = df.groupby('Id')['value'].pct_change().gt(.03).astype(int)

产出:

Id      date  value  big_change
0  x1  01-01-22   46.0           0
1  x1  02-01-22   46.0           0
2  x1  03-01-22   45.8           0
3  x2  03-04-22   57.0           0
4  x2  03-04-22   62.0           1

相关问题