Pandas read_pickle() 导致以 10 为基数的 int() 的文字无效: ''ASF'

问题描述 投票:0回答:1

我编写了一些将数据聚类到数据框中的脚本。因为我的 RAM 大小太小,无法一次容纳所有数据,所以我必须使用

df.to_pickle()
函数将其临时写入磁盘。当我想使用函数
pd.read_pickle(path_to_file)
再次读取数据时,脚本有时会崩溃并出现以下错误:

ValueError: invalid literal for int() with base 10: 'ASF'

有趣的是,这只发生在某些系统上,在我的一台电脑上,脚本运行没有错误,并且所有结果都是正确的。在另一个系统上,脚本不会运行并抛出上面提到的错误。我检查了数据框是否仅包含数值,是的。我还使用了相同的 conda 环境,正如我的第一个假设一样,错误可能取决于 python 或库版本。

同样有趣的是,错误出现在不同系统的不同

.pkl
文件上。但 ValueError 总是出现在符号上
'ASF'

我希望有人知道我可以在哪里寻找解决方案,因为这个脚本在所有系统上运行很重要。

提前谢谢您。

python python-3.x pandas pickle
1个回答
0
投票

当您尝试使用不同的编码(如

pickle.loads(pickled_data.encode('latin1'))
)读取使用 Base64 编码的字符串时,可能会发生这种情况。首先尝试解码 Base64 编码的数据以获得原始的二进制数据。

pickled_data = base64.b64decode(pickled_data_b64)
data = pickle.loads(pickled_data)
© www.soinside.com 2019 - 2024. All rights reserved.