【问题标题】:Drop empty categories in sub groups using groupby in pandas?在熊猫中使用 groupby 删除子组中的空类别?
【发布时间】:2022-12-11 21:35:50
【问题描述】:

我有一个结果表

Year  mycat
2019  A        2
      B        1
2020  A        0
      B        1

在第 3 行 (2020, A),您看到零。我想摆脱这样的线条。

Year  mycat
2019  A        2
      B        1
2020  B        1

我怎样才能做到这一点?在我完成 .groupby().size() 之后,有没有办法让 pandas 处理它而无需“破解”结果表?

这是完整的代码:

>>> import pandas as pd
>>> df = pd.DataFrame({'Year': [2019, 2019, 2019, 2020], 'mycat': list('AABB')})
>>> df.mycat = df.mycat.astype('category')

>>> df
   Year mycat
0  2019     A
1  2019     A
2  2019     B
3  2020     B

>>> df.groupby(['Year', 'mycat']).size()
Year  mycat
2019  A        2
      B        1
2020  A        0
      B        1
dtype: int64

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    是的,有一种方法可以消除零实例 groupby 结果,即使对于 Categorical,例如在您指定的输入数据框中:

    df.groupby(['Year', 'mycat'], observed=True).size()
    

    groupby()的文档中,observed参数解释如下:

    观察到:bool,默认为 False

    这仅适用于任何石斑鱼是分类的。如果为真:仅显示分类石斑鱼的观察值。如果为 False:显示分类石斑鱼的所有值。

    【讨论】:

      猜你喜欢
      • 2017-03-09
      • 2016-09-03
      • 2019-05-04
      • 2019-04-12
      • 2020-11-25
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 2023-02-01
      相关资源
      最近更新 更多