如何使用 pandas pivot_table 聚合唯一计数

新手上路,请多包涵

这段代码:

 df2 = (
    pd.DataFrame({
        'X' : ['X1', 'X1', 'X1', 'X1'],
        'Y' : ['Y2', 'Y1', 'Y1', 'Y1'],
        'Z' : ['Z3', 'Z1', 'Z1', 'Z2']
    })
)
g = df2.groupby('X')
pd.pivot_table(g, values='X', rows='Y', cols='Z', margins=False, aggfunc='count')

返回以下错误:

 Traceback (most recent call last): ...
AttributeError: 'Index' object has no attribute 'index'

如何获得一个数据透视表,其中包含一个 DataFrame 列 的唯一值 对其他两个列的计数?

是否有 aggfunc 计数唯一?我应该使用 np.bincount() 吗?

注意。我知道 pandas.Series.values_counts() 但是我需要一个数据透视表。


编辑:输出应该是:

 Z   Z1  Z2  Z3
Y
Y1   1   1 NaN
Y2 NaN NaN   1

原文由 dmi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 475
2 个回答

你的意思是这样的吗?

 >>> df2.pivot_table(values='X', index='Y', columns='Z', aggfunc=lambda x: len(x.unique()))

Z   Z1  Z2  Z3
Y
Y1   1   1 NaN
Y2 NaN NaN   1

请注意,使用 len 假设您的 DataFrame 中没有 NA 。您可以执行 x.value_counts().count()len(x.dropna().unique()) 否则。

原文由 Chang She 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是对 .pivot_table 中的条目进行计数的好方法:

 >>> df2.pivot_table(values='X', index=['Y','Z'], columns='X', aggfunc='count')

        X1  X2
Y   Z
Y1  Z1   1   1
    Z2   1  NaN
Y2  Z3   1  NaN

原文由 julian peng 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题