You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas读取HDF5文件时遇ValueError错误的解决方法

问题

尝试用Pandas读取HDF5文件时触发错误:ValueError: invalid literal for int() with base 10: '5,3,2',仅调用data = pd.read_hdf(path),不清楚该调整哪些参数。该文件可通过pyCGNS包正常读取,但希望用Pandas完成读取操作。完整报错堆栈如下:

runfile('D:/projekty/CGNS_Read/untitled3.py', wdir='D:/projekty/CGNS_Read')
Traceback (most recent call last):

  File C:\Program Files\Spyder\pkgs\spyder_kernels\py3compat.py:356 in compat_exec
    exec(code, globals, locals)

  File d:\projekty\cgns_read\untitled3.py:19
    data = pd.read_hdf(path + name)

  File C:\Program Files\Spyder\pkgs\pandas\io\pytables.py:420 in read_hdf
    store = HDFStore(path_or_buf, mode=mode, errors=errors, **kwargs)

  File C:\Program Files\Spyder\pkgs\pandas\io\pytables.py:560 in __init__
    tables = import_optional_dependency("tables")

  File C:\Program Files\Spyder\pkgs\pandas\compat\_optional.py:142 in import_optional_dependency
    module = importlib.import_module(name)

  File importlib\__init__.py:127 in import_module

  File <frozen importlib._bootstrap>:1014 in _gcd_import

  File <frozen importlib._bootstrap>:991 in _find_and_load

  File <frozen importlib._bootstrap>:975 in _find_and_load_unlocked

  File <frozen importlib._bootstrap>:671 in _load_unlocked

  File <frozen importlib._bootstrap_external>:848 in exec_module

  File <frozen importlib._bootstrap>:219 in _call_with_frames_removed

  File C:\Program Files\Spyder\Python\lib\site-packages\tables\__init__.py:100
    from .file import File, open_file, copy_file

  File C:\Program Files\Spyder\Python\lib\site-packages\tables\file.py:20
    import numexpr as ne

  File C:\Program Files\Spyder\Python\lib\site-packages\numexpr\__init__.py:44
    nthreads = _init_num_threads()

  File C:\Program Files\Spyder\Python\lib\site-packages\numexpr\utils.py:156 in _init_num_threads
    requested_threads = int(os.environ['OMP_NUM_THREADS'])

ValueError: invalid literal for int() with base 10: '5,3,2'
解决方案
  • 问题根源:错误并非Pandas读取HDF5文件本身导致,而是numexpr库初始化时,尝试将环境变量OMP_NUM_THREADS的'5,3,2'值转为整数失败——该值是逗号分隔的字符串,无法直接转换为整数。
  • 修复步骤:
    1. 在调用pd.read_hdf()前,修正OMP_NUM_THREADS环境变量为单个整数值,示例代码:
      import os
      # 根据自身CPU核心数设置合理线程数,比如4
      os.environ['OMP_NUM_THREADS'] = '4'
      
    2. 执行上述代码后再进行文件读取:
      data = pd.read_hdf(path + name)
      
  • 额外说明:也可以直接检查系统或Spyder的环境变量配置,将OMP_NUM_THREADS的值改为合法的单个整数,避免逗号分隔格式,从根源解决问题。

内容的提问来源于stack exchange,提问作者Galedon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 13:13:02