我想从下面的数据框中创建一个透视表,其中包含列sales
,rep
。透视表显示sales
,但没有rep
。当我只尝试使用rep
时,得到了错误DataError: No numeric types to aggregate
。如何解决这个问题,以便同时看到数值字段sales
和字段(字符串)rep
data = {'year': ['2016', '2016', '2015', '2014', '2013'],
'country':['uk', 'usa', 'fr','fr','uk'],
'sales': [10, 21, 20, 10,12],
'rep': ['john', 'john', 'claire', 'kyle','kyle']
}
print pd.DataFrame(data).pivot_table(index='country', columns='year', values=['rep','sales'])
sales
year 2013 2014 2015 2016
country
fr NaN 10 20 NaN
uk 12 NaN NaN 10
usa NaN NaN NaN 21
print pd.DataFrame(data).pivot_table(index='country', columns='year', values=['rep'])
DataError: No numeric types to aggregate
似乎问题来自列rep和sales的不同类型,如果将sales转换为
str
类型并将aggfunc指定为sum
,那么它可以正常工作:您可以使用
set_index
和unstack
:收益率
或者,将
pivot_table
与aggfunc='first'
一起使用:收益率
对于
aggfunc='first'
,每个(country, year, rep)
或(country, year, sales)
组通过获取找到的第一个值而聚合。在您的情况下,似乎没有重复项,因此第一个值与唯一的值相同。相关问题 更多 >
编程相关推荐