Date Data
2016-04-29 12
2016-04-30 13
2016-05-01 2
2016-05-02 11
2016-05-03 12
2016-05-04 3
2016-05-05 14
在上面的datafrme中,我要删除那些行值下降到相邻2行以下平均8个单位的行,例如与日期2016-05-01和2016-05-04对应的行中的值至少在紧接2行的下方至少8个单位。结果应如下所示:
Date Data
2016-04-29 12
2016-04-30 13
2016-05-02 11
2016-05-03 12
2016-05-05 14
答案 0 :(得分:1)
您应该看看pandas.Series.diff。
我会这样:
>>> df
Data
Date
2016-04-29 12
2016-04-30 13
2016-05-01 2
2016-05-02 11
2016-05-03 12
2016-05-04 3
2016-05-05 14
>>> df[(df.Data.diff().fillna(0) > -8) & (df.Data.diff(-1).fillna(0) > -8)]
Data
Date
2016-04-29 12
2016-04-30 13
2016-05-02 11
2016-05-03 12
2016-05-05 14
第一个表达式计算的行差取第二个负号,依此类推。然后替换第一行中的NaN
。
第二个表达式计算第一个减去第二个之后的行差,以此类推。在最后一行替换NaN
。我过滤掉了两个表达式都导致值低于给定阈值的行。