大熊猫:根据总数和平均值过滤出列

Dmi*_* B. 5 pandas

我有一个时间序列数据的数据框,其中的数值数据在列中。在绘制此数据时,我只想绘制某些被认为不足的序列。这是我选择要绘制的列的方式:

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)

ayh*_*han 6

您只需要更改 slice( df.iloc[-2:]) 并调用.mean()

df.loc[:, (df.sum() >= 1000) & (df.iloc[-2:].mean() >= 100)]
Run Code Online (Sandbox Code Playgroud)

(您的示例中似乎有一个错误。最后一行的输入和输出不同。)