在pandas中对分类变量使用groupby删除未使用的类别[英] drop unused categories using groupby on categorical variable in pandas

本文是小编为大家收集整理的关于在pandas中对分类变量使用groupby删除未使用的类别的处理方法,想解了在pandas中对分类变量使用groupby删除未使用的类别的问题怎么解决?在pandas中对分类变量使用groupby删除未使用的类别问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

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

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

如何获得丢弃"未使用"类别的结果?例如

  values
cats        
a        1.0
b        2.0
c        4.0

推荐答案

选项1
remove_unused_categories

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

      values
cats        
a          1
b          2
c          4

也可以先赋值,再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 转换 -

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

      values
cats        
a          1
b          2
c          4

本文地址:https://www.itbaoku.cn/post/1727926.html