Python dataframe 检查连续值的增量

2024-09-25 04:24:13 发布

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

我有一个这样的数据帧

>>> df = pd.DataFrame([100, 150, 150, 103])
>>> df
     0
0  100
1  150
2  150
3  103
>>> 

我想检查下一个值是小于previus值的+10%还是-10%,如果不是,用上一个值替换下一个值

这是期望的结果

     0
0  100
1  100
2  100
3  103

我试过用“where”,但效果不太好

>>> df.where(abs(df / df.shift()-1) < 0.1, df.shift().fillna(method='bfill'), inplace=True)
>>> df
     0
0  100
1  100
2  150
3  150

我该怎么解决?你知道吗


Tags: 数据truedataframedfshiftabswheremethod
1条回答
网友
1楼 · 发布于 2024-09-25 04:24:13

这是使用^{}的手动循环方法。你知道吗

df = pd.DataFrame([100, 150, 150, 103])

res = np.zeros(len(df[0]))
res[0] = df[0].iloc[0]

for idx, val in df[0].iloc[1:].iteritems():
    if abs(val / res[idx-1] - 1) < 0.1:
        res[idx] = val
    else:
        res[idx] = res[idx-1]

df[1] = res.astype(int)

print(df)

     0    1
0  100  100
1  150  100
2  150  100
3  103  103

相关问题 更多 >