pivot_表没有要聚合的数字类型

我想从以下数据框中创建一个透视表,其中包含列salesrep。透视表显示的是sales,但没有rep。当我仅尝试使用rep时,我得到了错误DataError:没有要聚合的数值类型。如何解决此问题,使我同时看到数字字段sales和字段(字符串)rep

数据={'year':['2016','2016','2015','2014','2013'],
‘国家’:[‘英国’、‘美国’、‘法国’、‘法国’、‘英国’],
“销售”:[10,21,20,10,12],
“代表”:[“约翰”、“约翰”、“克莱尔”、“凯尔”、“凯尔”]
}
打印pd.DataFrame(data.pivot_表(index='country',columns='year',value=['rep','sales']))
出售
2013年2014年2015年2016年
国
fr NaN 10 20 NaN
英国12南南10
美国南部21
打印pd.DataFrame(data.pivot_表(index='country',columns='year',values=['rep']))
DataError:没有要聚合的数字类型

您可以使用设置索引取消堆栈

df=pd.DataFrame(数据)
df.set_索引(['year','country'])。取消堆栈('year'))

屈服

销售代表
2013年2014年2016年2014年2016年
国
fr None kyle claire None NaN 10.0 20.0 NaN
英国kyle None None john 12.0 NaN NaN 10.0
美国无约翰南21.0

或者,使用带有aggfunc='first'pivot\u表

df.pivot_表(index='country',columns='year',value='rep','sales'],aggfunc='first')

屈服

销售代表
2013年2014年2016年2014年2016年
国
fr None kyle claire None None 10 20 None
英国凯尔无无约翰12无无无10
美国无约翰无21

使用aggfunc='first',每个(国家、年份、代表)(国家、年份、销售)
通过获取找到的第一个值对组进行聚合。在您的情况下,似乎没有重复项,因此第一个值与唯一的值相同

发表评论