【问题标题】:Can I use pandas' pivot_table to aggregate over a column with missing values?我可以使用 pandas 的 pivot_table 对缺少值的列进行聚合吗?
【发布时间】:2020-11-23 20:43:12
【问题描述】:

我是否可以使用 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 获得相同的结果吗?如果是,比怎么样?谢谢。

【问题讨论】:

    标签: python pandas dataframe pivot-table nan


    【解决方案1】:

    由于某些未知原因,dtype="category" 在计算 NaN 值时不能与 pivot_table() 一起使用。将它们转换为常规字符串会启用常规 pivot_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
    

    可以选择使用.fillna(0)nans 替换为0s

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 2021-03-03
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 2013-09-21
      • 2015-12-28
      • 2021-08-24
      • 2018-07-03
      相关资源
      最近更新 更多