Python 如果数据帧中的元素大于或小于以下元素的15%,请将其替换为0
我有一个以日期为索引的数据框。如果某个元素与前一个日期的元素有显著差异(15%),我想将其归零。例如:Python 如果数据帧中的元素大于或小于以下元素的15%,请将其替换为0,python,pandas,Python,Pandas,我有一个以日期为索引的数据框。如果某个元素与前一个日期的元素有显著差异(15%),我想将其归零。例如: df = A B 1.2 2.5 1 2 我希望新的df如下所示: df = A B 0 0 1 2 df = df.replace(df.where(df.abs(df.divide(df.shift(-1))>.15)), 0) 我现在的代码如下: df = A
df = A B
1.2 2.5
1 2
我希望新的df
如下所示:
df = A B
0 0
1 2
df = df.replace(df.where(df.abs(df.divide(df.shift(-1))>.15)), 0)
我现在的代码如下:
df = A B
0 0
1 2
df = df.replace(df.where(df.abs(df.divide(df.shift(-1))>.15)), 0)
我得到以下错误:
abs() takes 1 positional argument but 2 were given
这项工作:
df = df.where((df.divide(df.shift(+1), df).abs() > 0.15), 0)
print(df)
输出:
A B
0 0 0
1 1 2
请显示您的努力,简单地发布您想要的内容而不显示您尝试的内容是不好的。df.replace(df.where((df.abs(df.divide(df.shift(-1)))>.15)),0)将此编辑到您的问题中并显示失败的原因