【问题标题】:How can I filter specific column values after groupby?如何在 groupby 之后过滤特定的列值?
【发布时间】:2021-02-07 16:35:19
【问题描述】:

以下是我的数据框示例。

     A      R   K   S
130 Robe    41  35  snail
131 Slippers    44  42  hamster
132 Coat    47  49  mouse
133 Robe    50  56  goldfish
134 Slippers    53  63  bird
... ... ... ... ...
1166    Slippers    3149    7287    bird
1167    Coat    3152    7294    iguana
1168    Robe    3155    7301    snail
1169    Slippers    3158    7308    hamster
1170    Coat    3161    7315    mouse

如何找到 R 列的标准值,其中 S 列是“仓鼠”或 A 列是“外套”?

我试过dfe.groupby(['A', 'S']).sum().R.std(),但输出不正确。

【问题讨论】:

标签: pandas dataframe


【解决方案1】:

根据你的任务描述(找到 R 列,其中 S 列是...),您不需要任何分组。

首先根据您的标准过滤 DataFrame:

df.query("A == 'Coat' or S == 'hamster'")

您的数据样本的结果是:

             A     R     K        S
131   Slippers    44    42  hamster
132       Coat    47    49    mouse
1167      Coat  3152  7294   iguana
1169  Slippers  3158  7308  hamster
1170      Coat  3161  7315    mouse

然后计算你想要的,即.R.std()。

所以完整的代码是:

df.query("A == 'Coat' or S == 'hamster'").R.std()

结果:

1704.2421482876193

【讨论】:

    【解决方案2】:

    以下代码可用于支持R列的多个聚合函数。

    df.groupby(['A','S'])['R'].agg(['sum','std'])
    
                   sum  std
        A   S       
    Coat    iguana  3152    NaN
            mouse   3208    2201.930517
    Robe    goldfish    50  NaN
            snail   3196    2201.930517
    Slippers    bird    3202    2189.202595
             hamster    3202    2201.930517
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 2022-07-01
      • 1970-01-01
      相关资源
      最近更新 更多