ValueError:缓冲区 dtype 不匹配,预期为“Python 对象”但得到“双倍”

Posted

技术标签:

【中文标题】ValueError:缓冲区 dtype 不匹配,预期为“Python 对象”但得到“双倍”【英文标题】:ValueError: Buffer dtype mismatch, expected 'Python object' but got 'double' 【发布时间】:2018-12-25 08:48:03 【问题描述】:

我正在尝试读取 hdf 格式的文件。它以前工作正常,但现在突然出现以下错误:

pandas\_libs\writers.pyx in pandas._libs.writers.string_array_replace_from_nan_rep()

ValueError: Buffer dtype mismatch, expected 'Python object' but got 'double'

我的代码如下:

import pandas as pd
data = pd.read_hdf('p1.hdf')
data

我正在使用 Jupyter notebook 和 python 3.6。我只是不明白为什么我之前能够毫无问题地读取文件,现在弹出此错误。自上次运行以来我所做的不同的事情是创建一个虚拟环境来运行另一个代码,当我现在遇到这个错误时,我重新安装了 anaconda,但是在读取这个文件时我仍然收到这个错误:(

【问题讨论】:

使用最新版本的 pandas 时遇到了同样的问题。我刚刚在跟踪器上创建了一个问题:github.com/pandas-dev/pandas/issues/24404 【参考方案1】:

您可能安装了最新的 pandas 版本。我对 pandas-0.23.4 也有同样的问题,将其降级到 0.22.0 为我解决了这个问题。

【讨论】:

【参考方案2】:

将 pandas 更新到 0.24 版

这是 pandas 0.23 版本的问题。不过是在最新版的pandas 0.24.1中整理出来的。

参考:https://github.com/pandas-dev/pandas/issues/24404

你可以升级

pip3 install pandas -upgrade 

conda install pandas

【讨论】:

我猜你的意思是pip3 install --upgrade pandas

以上是关于ValueError:缓冲区 dtype 不匹配,预期为“Python 对象”但得到“双倍”的主要内容,如果未能解决你的问题,请参考以下文章

缓冲区 dtype 不匹配,预期为 'SIZE_t' 但得到了 'long long'

如何在不使用异常的情况下解决 ValueError dtype

Tensorflow:ValueError:预期的非整数,得到<dtype:'int32'>

1.0作为boolean dtype在pd.read_csv()中引起ValueError。

ValueError: numpy.dtype 的大小错误,尝试重新编译

ValueError:无法使用 dtype='numeric' 将字节/字符串数组转换为十进制数