当我尝试使用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')
但这会导致数据帧空。为什么?如何获得一个简单的数据透视表来计算组合数量? 谢谢。
答案 0 :(得分:0)
您需要将另一列用作聚合值。
添加一列 -
df['freq']=1
您的代码可以使用。
答案 1 :(得分:0)
你需要使用len作为aggfunc,就像这样
df.pivot_table(index='size', aggfunc=len, columns='color')
如果您想使用计数,请按以下步骤操作:
首先添加一个频率列,如下所示:
df['freq'] = df.groupby(['color', 'size'])['color'].transform('count')
然后使用频率列创建数据透视表:
df.pivot_table(values='freq', index='size', aggfunc='count', columns='color')