首页 > 解决方案 > 我可以使用 pandas 的 pivot_table 来聚合缺少值的列吗?

问题描述

我可以使用 pandas pivot_table 聚合具有缺失值的列并将这些缺失值包含为单独的类别吗?

In:
df = pd.DataFrame({'a': pd.Series(['X', 'X', 'Y', 'Y', 'N', 'N'], dtype='category'), 
                   'b': pd.Series([None, None, 'd', 'd', 'd', 'd'], dtype='category')})

Out:
    a   b
0   X   NaN
1   X   NaN
2   Y   d
3   Y   d
4   N   d
5   N   d

In:
df.groupby('a')['b'].apply(lambda x: x.value_counts(dropna=False)).unstack(1)

Out:
    NaN d
a       
N   NaN 2.0
X   2.0 0.0
Y   NaN 2.0

我可以使用 pandas pivot_table 获得相同的结果吗?如果是,比怎么样?谢谢。

标签: pythonpandasdataframepivot-tablenan

解决方案


由于某些未知原因,在计算值时dtype="category"不起作用。将它们转换为常规字符串可以启用常规.pivot_table()NaNpivot_table(aggfunc="size")

df.astype(str).pivot_table(index="a", columns="b", aggfunc="size")    

结果

b    d  nan
a          
N  2.0  NaN
X  NaN  2.0
Y  2.0  NaN

可以选择用s.fillna(0)替换nans0


推荐阅读