在Pandas中使用groupby删除子组中的空类别?

wvt8vs2t  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(164)

我有一个结果表

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

在第三行(2020, A)你看到零。我想去掉这样的行。

Year  mycat
2019  A        2
      B        1
2020  B        1

我该怎么做呢?有没有一种方法可以让Pandas处理这个问题,而不用在我完成.groupby().size()之后“黑掉”结果表?
下面是完整的代码:

>>> 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
vjhs03f7

vjhs03f71#

是的,有一种方法可以消除零示例groupby结果,即使是对于您指定的输入 Dataframe 中的类别:

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

groupby()的文档中,observed参数解释如下:
观察到:bool,默认为False
这仅适用于任何组为分类的情况。如果为True:仅显示分类分组的观测值。如果为False:显示分类分组的所有值。

相关问题