我有一个时间序列数据的数据框,其中包含列中的数字数据。在绘制这些数据时,我只想绘制一些被认为不足的系列。这是我如何选择要绘制的列:
df.loc[:, (df.iloc[-1] >= 100) & (df.sum() >= 1000)]
换句话说,“重要”的标准是一系列中超过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
输出:
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
答案 0 :(得分:4)
您只需更改切片(df.iloc[-2:]
)并致电.mean()
:
df.loc[:, (df.sum() >= 1000) & (df.iloc[-2:].mean() >= 100)]
(你的例子中似乎有一个错误。最后一行的输入和输出是不同的。)