Python字符串转Int/Float时遇OSError异常问题求助
问题排查与解决建议
核心问题分析
报错 OSError('could not get source code') 伴随 Unexpected exception formatting exception. Falling back to standard exception,通常和代码文件权限、路径异常或Pandas与Python环境的适配冲突有关,换电脑后环境路径、文件访问权限变化是主要诱因。
具体排查与修复步骤
- 检查文件路径:确保数据集和代码文件路径无中文、特殊字符(空格、括号等),改用纯英文路径,例如将
D:/用户数据/数据集.csv改为D:/data/dataset.csv。 - 验证文件权限:右键代码和数据集文件,确认当前用户拥有读取/写入权限,避免系统权限限制导致Pandas无法读取代码上下文。
- 运行最小测试代码:剥离复杂逻辑,先验证基础转换功能是否正常,示例代码:
若此代码正常运行,再逐步恢复原代码逻辑定位问题;若仍报错,聚焦环境或文件本身问题。import pandas as pd # 用测试数据集替换路径 df = pd.read_csv("test_dataset.csv") # 测试单列转换 df['int_column'] = df['int_column'].astype(int) df['float_column'] = df['float_column'].astype(float) print(df.dtypes) - 调整Pandas版本:最新版Pandas可能与Python3.9存在适配问题,降级至稳定兼容版本,执行命令:
pip install pandas==1.5.3 - 清理缓存:删除项目目录下的
__pycache__文件夹,以及Python安装目录下Lib\site-packages中的临时缓存文件,避免旧缓存干扰。 - 指定文件编码:换电脑后默认编码可能不同,读取文件时显式指定编码,例如:
df = pd.read_csv("dataset.csv", encoding='utf-8') # 或针对GBK编码的文件 df = pd.read_csv("dataset.csv", encoding='gbk') - 清理数据异常值:检查数据集中是否存在隐藏字符(空格、换行符),先清理再转换:
df['target_col'] = df['target_col'].str.strip().astype(int)
内容的提问来源于stack exchange,提问作者Alex Martinez
相关产品推荐
相关产品推荐

