pandas pivot_table运行失败是什么原因?object类型数值列求和无输出
底层逻辑说明
pivot_table数值聚合的隐式类型过滤规则
pandas的pivot_table方法使用sum这类数值聚合函数时,会默认排除dtype非数值的列,哪怕Amount列中存储的实际是可求和的数字,只要列的类型标记为object,就会被判定为无效聚合列,最终仅返回索引,无对应聚合结果。count聚合不受类型限制的原因count聚合的逻辑是统计非空值的数量,不需要对列值做算术运算,也不会校验列的数值类型属性,所以不管Amount是object还是float类型,都能正常统计生成完整透视表。groupby.sum可正常运行的差异点groupby的sum方法没有隐式过滤非数值dtype的逻辑,只要列内的元素本身支持加法运算,就会正常执行求和。你的场景中Amount列只是dtype被标记为object,实际存储的都是可计算的数值,所以groupby.sum可以正常得到结果,再经unstack转换后就能得到和透视表一致的结构。
当你把Amount列的数据类型转为float后,pivot_table会将其识别为有效数值列,sum聚合就可以正常运行。
内容的提问来源于stack exchange,提问作者MattiH
相关产品推荐
相关产品推荐

