首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将带有对象dtype的数据框架写入HDF5后,才能转换为字符串。

将带有对象dtype的数据框架写入HDF5后,才能转换为字符串。
EN

Stack Overflow用户
提问于 2020-09-16 11:32:46
回答 1查看 83关注 0票数 0

我有一个大数据数据,我想把它写到磁盘上,以便快速检索。我相信to_hdf(...)会推断列的数据类型,有时会出错。我想知道怎样才是正确的方法来处理这个问题。

代码语言:javascript
复制
import pandas as pd
import numpy as np

length = 10
df = pd.DataFrame({"a": np.random.randint(1e7, 1e8, length),})

# df.loc[1, "a"] = "abc"
# df["a"] = df["a"].astype(str)
print(df.dtypes)
df.to_hdf("df.hdf5", key="data", format="table")

取消注释不同的行将我引向以下内容。

  • 仅用数字填充列将导致数据类型int32并无问题地存储。
  • 将一个元素设置为abc将数据更改为对象,但似乎to_hdf内部推断另一种数据类型并引发错误:TypeError: object of type 'int' has no len()
  • 明确地将列转换为str将导致成功,而to_hdf存储数据。

现在我想知道在第二种情况下发生了什么,是否有办法防止这种情况发生?我发现的唯一方法是查看所有列,检查它们是否为dtype('O'),并将它们解释为str

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-28 14:16:38

我没有使用hdf5,而是找到了一个通用的泡菜库,它看起来非常适合这个工作:吉卜卜

存储和加载数据是直接的:

代码语言:javascript
复制
import joblib
joblib.dump(df, "file.jl")
df2 = joblib.load("file.jl")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63919142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档