Pandas pivot_table数值类型异常与求和结果错误的解决求助
解决Pivot Table中Qtd列求和异常的问题
首先,你遇到的这个问题核心原因很明确:pivot_table默认的聚合函数是均值(mean),而不是你需要的求和(sum)!这就是为什么会出现6.25这种非整数结果——它是同一价格下Vendedor对应的Qtd值的平均值,而非总和。
修正方法
只需要在pivot_table里显式指定aggfunc='sum'参数,就能得到正确的Qtd总和:
df.between_time('09:00', '09:05').head(10).pivot_table( index='Preço', columns='Agr', values='Qtd', aggfunc='sum' # 关键:指定求和作为聚合方式 )
为什么会出现这种情况?
默认情况下,Pandas的pivot_table会对重复的分组(比如同一个Preço+Agr组合)计算平均值。看你提供的原始数据:
Preço=4073.5对应Agr=Vendedor有3条记录,Qtd分别是5、5、5,总和15,均值就是5Preço=4074.0对应Agr=Vendedor有4条记录,Qtd是10、5、5、5,总和25,均值就是25/4=6.25
这就是奇怪数值的来源,完全是默认聚合逻辑导致的。
额外优化
如果需要确保结果是整数类型,可以加上fill_value=0处理空值,再用astype(int)转换类型:
result = df.between_time('09:00', '09:05').head(10).pivot_table( index='Preço', columns='Agr', values='Qtd', aggfunc='sum', fill_value=0 ).astype(int)
这样得到的结果就全是整数,且完全符合实际的Qtd总和需求了。
内容的提问来源于stack exchange,提问作者Leonardo Henriques
相关产品推荐
相关产品推荐

