Python DataFrame调用pivot_table仅返回索引列无列标题问题
pandas透视表不显示统计列的解决方法
问题根因
- 原始数据存在脏值:你定义的
Personality列中,第5个取值为Sania \n Mirza,带有换行符和多余空格,会被识别为和Sania Mirza不同的独立取值;最后一个取值Venus Willians存在拼写错误,也和你预期的Venus Williams不匹配,会额外生成多余列。 - 部分场景下pandas默认显示配置限制了列的展示数量,导致列被折叠隐藏。
- 透视表写法中同时指定
columns和values为同一字段,存在微小歧义可能引发计数异常。
解决步骤
1. 先清洗原始数据
对Personality字段做标准化处理,去除空白字符、修正拼写错误:
# 去除字段值前后的所有空白、换行、制表符 df['Personality'] = df['Personality'].str.strip() # 修正Venus的拼写错误(匹配你预期的输出结果) df['Personality'] = df['Personality'].replace('Venus Willians', 'Venus Williams')
2. 调整透视表写法
用aggfunc='size'替代count,不需要重复指定values参数,逻辑更清晰无歧义:
result = df.pivot_table( index='Country', columns='Personality', aggfunc='size', fill_value=0 )
3. 调整pandas显示配置(针对列被折叠的场景)
如果运行后依然看不到列,修改pandas全局显示参数放开列限制:
# 显示所有列,不折叠 pd.set_option('display.max_columns', None) # 取消列宽限制 pd.set_option('display.max_colwidth', None) # 打印查看结果 print(result)
运行后即可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者ds_student
相关产品推荐
相关产品推荐

