本文介绍了在 pandas 的分类变量上使用groupby删除未使用的类别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

根据分类数据-操作,默认情况下groupby将显示未使用"类别:

As per Categorical Data - Operations, by default groupby will show "unused" categories:

In [118]: cats = pd.Categorical(["a","b","b","b","c","c","c"], categories=["a","b","c","d"])

In [119]: df = pd.DataFrame({"cats":cats,"values":[1,2,2,2,3,4,5]})

In [120]: df.groupby("cats").mean()
Out[120]:
      values
cats
a        1.0
b        2.0
c        4.0
d        NaN

如何在删除未使用"类别的情况下获得结果?例如

How to obtain the result with the "unused" categories dropped? e.g.

  values
cats
a        1.0
b        2.0
c        4.0

推荐答案

选项1
remove_unused_categories

Option 1
remove_unused_categories

df.groupby(df.cats.cat.remove_unused_categories()).mean()

      values
cats
a          1
b          2
c          4

您还可以先进行分配,然后再进行groupby-

You can also make the assignment first, and then groupby -

df.assign(cats=df.cats.cat.remove_unused_categories()).groupby('cats').mean()

或者,

df['cats'] = df.cats.cat.remove_unused_categories()
df.groupby('cats').mean()
      values
cats
a          1
b          2
c          4


选项2
astype str的转换-


Option 2
astype to str conversion -

df.groupby(df.cats.astype(str)).mean()

      values
cats
a          1
b          2
c          4

这篇关于在 pandas 的分类变量上使用groupby删除未使用的类别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-11 13:51