根据“ 分类数据-操作”,默认情况下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
Run Code Online (Sandbox Code Playgroud)
如何删除“未使用”类别的结果?例如
values
cats
a 1.0
b 2.0
c 4.0
Run Code Online (Sandbox Code Playgroud)
df.groupby(df.cats.cat.remove_unused_categories()).mean()
values
cats
a 1
b 2
c 4
Run Code Online (Sandbox Code Playgroud)
您也可以先进行分配,然后groupby-
df.assign(cats=df.cats.cat.remove_unused_categories()).groupby('cats').mean()
Run Code Online (Sandbox Code Playgroud)
要么,
df['cats'] = df.cats.cat.remove_unused_categories()
df.groupby('cats').mean()
Run Code Online (Sandbox Code Playgroud)
values
cats
a 1
b 2
c 4
Run Code Online (Sandbox Code Playgroud)
选择2
astype至str转换-
df.groupby(df.cats.astype(str)).mean()
values
cats
a 1
b 2
c 4
Run Code Online (Sandbox Code Playgroud)
从 0.23 版开始,您可以observed=True在groupby调用中指定以实现所需的行为。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html
| 归档时间: |
|
| 查看次数: |
2160 次 |
| 最近记录: |