我有一个时间序列数据的数据框,其中的数值数据在列中。在绘制此数据时,我只想绘制某些被认为不足的序列。这是我选择要绘制的列的方式:
df.loc[:, (df.iloc[-1] >= 100) & (df.sum() >= 1000)]
Run Code Online (Sandbox Code Playgroud)
换句话说,“显着”的标准是一系列值的总和超过1000,而最近的值至少为100。
然而,事实证明这是不够的。我需要的是,总和超过1000(和以前一样),但是我希望最后两行(两个最近的读数)的平均值超过100。
如何更改上面的滤波器以计算平均值?
在:
date A B C D
2016-04-01 80 235 99 0
2016-04-02 85 295 153 14
2016-04-03 111 363 224 14
2016-04-04 111 379 296 50
2016-04-05 11 51 29 5
Run Code Online (Sandbox Code Playgroud)
出:
date B C
2016-04-01 235 99
2016-04-02 295 153
2016-04-03 363 224
2016-04-04 379 296
2016-04-05 51 29
Run Code Online (Sandbox Code Playgroud)
您只需要更改 slice( df.iloc[-2:]) 并调用.mean():
df.loc[:, (df.sum() >= 1000) & (df.iloc[-2:].mean() >= 100)]
Run Code Online (Sandbox Code Playgroud)
(您的示例中似乎有一个错误。最后一行的输入和输出不同。)