Python 3.x 如何将透视表中Dataframe中的布尔列聚合为百分比
我有一个熊猫数据框。在它的许多列中有ID,它是布尔值,quarty表示年份和季度(例如2016Q1)以及State(例如TX、CA),因此它看起来像:Python 3.x 如何将透视表中Dataframe中的布尔列聚合为百分比,python-3.x,pandas,numpy,boolean,Python 3.x,Pandas,Numpy,Boolean,我有一个熊猫数据框。在它的许多列中有ID,它是布尔值,quarty表示年份和季度(例如2016Q1)以及State(例如TX、CA),因此它看起来像: id Quarter State True 15Q1 AZ False 17Q1 WY True 14Q2 NH False 15Q1 AZ 我正在尝试构建一个数据透视表,ID作为值,State作为索引,quarter作为列。我想使用np.mean作为agg_func但是我得到了DataError:没有要聚合的
id Quarter State
True 15Q1 AZ
False 17Q1 WY
True 14Q2 NH
False 15Q1 AZ
我正在尝试构建一个数据透视表,ID作为值,State作为索引,quarter作为列。我想使用np.mean
作为agg_func
但是我得到了DataError:没有要聚合的数值类型
当我使用count
作为聚合函数时,它显示正确。当我聚合总的np.mean(df['id'])
时,我得到了.64
,这正是我想要的输出类型,除了更聚合而不是更细粒度。那么,为什么np.sum
在这里起作用,但当我将它用作数据透视表中的聚合函数时却不起作用呢?我如何让它工作
我想我可以将True
和False
转换为1和0,但我不愿意,因为我实际上有很多“id”列,我希望通过这种方式进行聚合
编辑:所以这是一个只在我的完整数据集中出现的问题,而不是我用作示例的玩具数据集。我又玩了一些,如果我在'Year'或'State'上使用平均值作为聚合函数进行分组,则仍然会弹出ValueError:No objects to concatenate
。当我尝试df['id']时,它甚至会弹出。descripe()
以前有人遇到过这样的问题吗?您的输出不是很清楚,但我认为这正是您需要的
pd.pivot_table(df, index='State', columns='Quarter', values = 'id', aggfunc='mean')
你得到
Quarter 14Q2 15Q1 17Q1
State
AZ NaN 0.5 NaN
NH 1.0 NaN NaN
WY NaN NaN 0.0
您可以在pivot_表中传递参数fill_values=0,以将NaNs替换为0Hmmm,这是我尝试的,但它不起作用。我认为我的实际数据集有一些奇怪的东西,玩具数据集没有。我会更深入地研究,但我怀疑我能把一切都弄清楚。不过谢谢你的帮助。