在 pandas 中,如何将数据框旋转到缺少类别的分类系列上?

Ric*_*ton 6 python pivot pandas categorical-data

我有一个 pandas 数据框,其中有一个缺少类别的分类系列。

在下面显示的示例中,group具有类别"a""b"和,但数据框中"c"没有 的情况。"c"

import pandas as pd
dfr = pd.DataFrame({
    "id": ["111", "222", "111", "333"], 
    "group": ["a", "a", "b", "b"], 
    "value": [1, 4, 9, 16]})
dfr["group"] = pd.Categorical(dfr["group"], categories=["a", "b", "c"])
dfr.pivot(index="id", columns="group")
Run Code Online (Sandbox Code Playgroud)

生成的数据透视数据框包含列ab。我期望一c列也包含所有缺失值。

      value      
group     a     b
id               
111     1.0   9.0
222     4.0   NaN
333     NaN  16.0
Run Code Online (Sandbox Code Playgroud)

如何在分类系列上旋转数据框以包含所有类别的列,无论它们是否存在于原始数据框中?

Lea*_*ess 5

pd.pivot_table有一个dropna参数指示删除或不删除充满 NaN 的值列。

尝试将其设置为False

import pandas as pd
dfr = pd.DataFrame({
    "id": ["111", "222", "111", "333"], 
    "group": ["a", "a", "b", "b"], 
    "value": [1, 4, 9, 16]})
dfr["group"] = pd.Categorical(dfr["group"], categories=["a", "b", "c"])
pd.pivot_table(dfr, index="id", columns="group", dropna=False)
Run Code Online (Sandbox Code Playgroud)