PyCharm运行pandas代码触发AttributeError报错问题
问题场景
在PyCharm中运行如下pandas测试代码时抛出异常,无法正常执行:
import pandas as pd # 定义DataFrame df = pd.DataFrame({'points': [25, 12, 15, 14, 19, 23, 25, 29], 'assists': [5, 7, 7, 9, 12, 9, 9, 4], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}) # 打印输出DataFrame print(df)
完整报错信息如下:
Traceback (most recent call last): File "E:\pc\krish naik\1. python for data science & data analysis(12 days)\p1.py", line 1, in <module> import pandas as pd File "E:\pc\venv\lib\site-packages\pandas\__init__.py", line 135, in <module> from pandas import api, arrays, errors, io, plotting, testing, tseries File "E:\pc\venv\lib\site-packages\pandas\testing.py", line 6, in <module> from pandas._testing import ( File "E:\pc\venv\lib\site-packages\pandas\_testing\__init__.py", line 51, in <module> from pandas._testing._io import ( # noqa:F401 File "E:\pc\venv\lib\site-packages\pandas\_testing\_io.py", line 22, in <module> from pandas._testing._random import rands File "E:\pc\venv\lib\site-packages\pandas\_testing\_random.py", line 10, in <module> RANDS_CHARS = np.array(list(string.ascii_letters + string.digits), dtype=(np.str_, 1)) AttributeError: module 'string' has no attribute 'ascii_letters'
报错原因
这个错误属于典型的Python模块导入冲突:
Python导入模块的搜索优先级为「当前运行脚本所在目录 > 标准库路径 > 第三方库安装路径」,如果你的脚本同级目录下存在名为string.py的自定义文件,该文件会直接覆盖Python标准库的string模块。pandas初始化时需要调用标准库string的ascii_letters属性,实际加载的却是你自定义的同名文件,因此抛出属性不存在的异常。
注意:自定义脚本和标准库/第三方库重名是Python新手最高频的踩坑点之一,除了string.py之外,pandas.py、numpy.py、random.py、math.py这类命名也非常容易引发同类报错
修复方案
- 打开报错中提示的脚本所在路径
E:\pc\krish naik\1. python for data science & data analysis(12 days)\,找到自定义的string.py文件 - 将该文件重命名为不会和库重名的名称,例如
string_practice.py - 删除同目录下自动生成的
__pycache__文件夹,清除旧的模块导入缓存 - 重新运行代码即可正常执行。如果上述操作后仍报错,在PyCharm的终端中执行
pip install --upgrade pandas numpy,升级虚拟环境内pandas和numpy到和当前Python版本兼容的稳定版即可
内容的提问来源于stack exchange,提问作者obi wan kenobi
相关产品推荐
相关产品推荐

