pandas pivot_table返回空数据帧

时间:2018-04-26 10:21:50

标签: python pandas count pivot-table

当我尝试使用pivot_table对值进行分组时,我得到一个空数据帧。让我们先创建一些愚蠢的数据:

import pandas as pd
df = pd.DataFrame({"size":['large','middle','xsmall','large','middle','small'],
                   "color":['blue','blue','red','black','red','red']})

当我使用时:

df1 = df.pivot_table(index='size', aggfunc='count')

回报我的期望。现在我想要一个完整的数据透视表,其颜色为列:

df2 = df.pivot_table(index='size', aggfunc='count',columns='color')

但这会导致数据帧空。为什么?如何获得一个简单的数据透视表来计算组合数量? 谢谢。

2 个答案:

答案 0 :(得分:0)

您需要将另一列用作聚合值。

添加一列 -

df['freq']=1

您的代码可以使用。

答案 1 :(得分:0)

你需要使用len作为aggfunc,就像这样

df.pivot_table(index='size', aggfunc=len, columns='color')

如果您想使用计数,请按以下步骤操作:

  1. 首先添加一个频率列,如下所示:

    df['freq'] = df.groupby(['color', 'size'])['color'].transform('count')
    
  2. 然后使用频率列创建数据透视表:

    df.pivot_table(values='freq', index='size', aggfunc='count', columns='color')