使用Pandas导入数值数据时出现数值不符问题
问题分析与解决方案
先纠正代码语法错误
你当前的loc筛选语法存在明显错误,这可能影响结果的准确性,正确写法如下:
df = pd.read_excel('C:/Users/tkmwangi/Downloads/Non-Life Data.xlsx') # 正确的条件筛选逻辑 data = df.loc[df['Contract_NO'] == 91] print(data)
数值不符的核心排查方向
1. 检查Excel源文件的实际存储值
打开Excel文件,定位到Contract_NO=91、UnderWriting_Year=2007的行,点击对应的PREMIUMS单元格,查看编辑栏中的真实数值:
- 很多时候单元格设置了显示格式(比如自定义小数位数、千分位显示),但实际存储的是另一个值;
- 确认该单元格是否为公式计算结果,如果是,检查公式引用的单元格是否正确,逻辑是否存在错误。
2. 强制指定数据类型读取
读取时强制将PREMIUMS列设为浮点型,避免pandas自动类型识别出错:
df = pd.read_excel('C:/Users/tkmwangi/Downloads/Non-Life Data.xlsx', dtype={'PREMIUMS': float}) data = df.loc[df['Contract_NO'] == 91] print(data['PREMIUMS'])
3. 验证CSV导出与读取的准确性
- 导出CSV时,选择Excel的「文件-另存为」,格式选「逗号分隔值(.csv)」,不要修改任何数值格式;
- 用记事本或VS Code打开导出的CSV文件,直接查看对应行的PREMIUMS值是否正确;
- 再用pandas读取CSV验证:
df = pd.read_csv('导出的CSV文件路径.csv', dtype={'PREMIUMS': float}) data = df.loc[df['Contract_NO'] == 91] print(data)
4. 排查数据重复或行混淆
确认Contract_NO=91的行是否存在重复的UnderWriting_Year=2007记录,打印完整结果排查:
print(data[['Contract_NO', 'UnderWriting_Year', 'PREMIUMS']])
内容的提问来源于stack exchange,提问作者Ted
相关产品推荐
相关产品推荐

