我有一个Pandas Dataframe。其中有很多列是ID,它是布尔,季度,它给出年份和季度(例如2016Q1)和州(例如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: No numeric types to aggregate
当我使用count
作为聚合函数时,它会正确显示。当我汇总总np.mean(df['id'])
时,我得到.64
,这正是我正在寻找的输出类型,除了更多聚合而不是粒度。那么为什么np.sum
可以在那里工作,但是当我将它用作数据透视表中的聚合函数时呢?我该如何让它发挥作用。
我想我可以将True
和False
转换为1&0和0,但我更喜欢不要,因为我实际上有很多' id'列我希望以这种方式聚合。
编辑:所以这是一个只会弹出我的完整数据集的问题,而不是我用作例子的玩具数据集。我玩了一些,ValueError: No objects to concatenate
仍然弹出,如果我使用mean作为聚合功能在'年'或者'州'。当我尝试df['id'].describe()
以前有没有人遇到这样的问题?
答案 0 :(得分:0)
您的输出不是很清楚,但这是我认为您需要的
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_table中传递参数fill_values = 0,将NaN替换为0