Python Pandas透视表无法计算总计,遇TypeError报错求助
解决Pandas透视表添加总计时报错的问题
错误原因
你碰到的TypeError: 'str' object is not callable是因为开启margins=True后,Pandas需要可调用的聚合函数来计算总计行/列,但你传入的aggfunc='size'是字符串类型,没法被直接调用执行总计计算。
解决方案
把字符串形式的'size'换成可调用的len函数就行,len和size在这里的统计效果完全一致,都是用来计算每组的元素数量:
import pandas as pd # 创建DataFrame data = {'Kolonne1': ['A', 'B', 'A', 'C', 'B'], 'Kolonne2': ['X', 'Y', 'X', 'Z', 'Z']} df = pd.DataFrame(data) # 替换aggfunc为len,开启总计 pivot_table = df.pivot_table( index='Kolonne1', columns='Kolonne2', aggfunc=len, # 这里把'size'换成len fill_value=0, margins=True, margins_name='Totaler' ) print(pivot_table)
运行结果
执行后会生成带行/列总计的透视表:
Kolonne2 X Y Z Totaler Kolonne1 A 2 0 0 2 B 0 1 1 2 C 0 0 1 1 Totaler 2 1 2 5
内容的提问来源于stack exchange,提问作者Sten B. Rasmussen
相关产品推荐
相关产品推荐

