Power BI中Python脚本导入数据报错:numpy.dtype大小不兼容
Power BI中Python脚本运行报错排查与解决
错误详情
运行Python脚本时触发如下错误:
Details: "ADO.NET: Python script error. <pi>Traceback (most recent call last): File "C:\Users\####\PythonScriptWrapper_ddec053d-7bfc-4f27-8ea3-03d81d9a6c40\PythonScriptWrapper.PY", line 2, in <module> import os, pandas, matplotlib File "C:\Users\####\anaconda3\lib\site-packages\pandas\__init__.py", line 22, in <module> from pandas.compat import ( File "C:\Users\####\anaconda3\lib\site-packages\pandas\compat\__init__.py", line 15, in <module> from pandas.compat.numpy import ( File "C:\Users\####\anaconda3\lib\site-packages\pandas\compat\numpy\__init__.py", line 7, in <module> from pandas.util.version import Version File "C:\Users\####\anaconda3\lib\site-packages\pandas\util\__init__.py", line 1, in <module> from pandas.util._decorators import ( # noqa File "C:\Users\####\anaconda3\lib\site-packages\pandas\util\_decorators.py", line 14, in <module> from pandas._libs.properties import cache_readonly # noqa File "C:\Users\####\anaconda3\lib\site-packages\pandas\_libs\__init__.py", line 13, in <module> from pandas._libs.interval import Interval File "pandas\_libs\interval.pyx", line 1, in init pandas._libs.interval ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject </pi>"
已尝试操作
- 重新安装Numpy,但问题未解决
当前使用的Python脚本
import pandas as pd from io import StringIO data = """Exchange ID;ExchangeRate;Exchange Currency 1;1;USD 2;0,75;GBP 3;0,85;EUR 4;3,67;AED 5;1,3;AUD""" df = pd.read_csv(StringIO(data), sep=';') # Return the transformed dataframe df
需求
- 修复上述报错,让脚本能在Power BI中正常运行
- 后续需处理3个本地xlsx文件
解决方案
1. 彻底解决numpy与pandas的二进制兼容问题
该错误源于numpy和pandas版本不匹配,导致编译后的二进制文件不兼容,仅重新安装numpy无法解决,需同步处理两者:
- 卸载现有numpy和pandas:
若使用conda环境:pip uninstall -y numpy pandasconda uninstall -y numpy pandas - 安装稳定兼容的版本组合(推荐匹配版本:pandas 1.5.x + numpy 1.21.x,可根据自身Python版本调整):
若使用conda环境:pip install pandas==1.5.3 numpy==1.21.6conda install pandas=1.5.3 numpy=1.21.6
2. 确认Power BI使用的Python环境
Power BI可能默认调用系统Python而非Anaconda环境,需手动指定:
- 打开Power BI → 文件 → 选项和设置 → 选项 → Python脚本
- 选择Anaconda的Python.exe路径(示例:
C:\Users\####\anaconda3\python.exe) - 重启Power BI后重新运行脚本
3. 扩展脚本处理xlsx文件
若需读取3个xlsx文件,可修改脚本如下(需先安装openpyxl依赖):
import pandas as pd import glob # 替换为你的xlsx文件所在目录 file_paths = glob.glob(r'C:\目标文件夹路径\*.xlsx') # 批量读取并合并所有文件 df_list = [] for path in file_paths: # 根据实际情况调整sheet_name、header等参数 df = pd.read_excel(path, sheet_name=0, engine='openpyxl') df_list.append(df) merged_df = pd.concat(df_list, ignore_index=True) # 返回合并后的数据集 merged_df
未安装openpyxl时,先执行pip install openpyxl完成依赖安装。
内容的提问来源于stack exchange,提问作者AROMANIA
相关产品推荐
相关产品推荐

