如果数据框中的元素大于或小于下面的元素,则将其替换为0

时间:2016-01-09 20:18:06

标签: 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)

我收到以下错误:

abs() takes 1 positional argument but 2 were given

1 个答案:

答案 0 :(得分:1)

这有效:

df = df.where((df.divide(df.shift(+1), df).abs() > 0.15), 0)
print(df)

输出:

   A  B
0  0  0
1  1  2