【问题标题】:pandas: filtering out columns based on total sum and average熊猫:根据总和和平均值过滤掉列
【发布时间】:2016-05-26 15:33:48
【问题描述】:

我有一个时间序列数据的数据框,列中有数字数据。在绘制这些数据时,我只想绘制某些被认为不足的系列。以下是我选择要绘制的列的方法:

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

【问题讨论】:

    标签: pandas


    【解决方案1】:

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

    df.loc[:, (df.sum() >= 1000) & (df.iloc[-2:].mean() >= 100)]
    

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

    【讨论】:

      猜你喜欢
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 2015-09-11
      • 2020-08-08
      相关资源
      最近更新 更多