如何向Pandas HDF5文件添加新DataFrame?写入时遇对象错误求助
解决HDF5文件添加新DataFrame时的报错问题
我懂你踩的这个坑了——用pd.read_hdf()打开HDF5文件后调用put(),结果弹出类似"'DataFrame' object has no attribute 'put'"的错误,对吧?问题根源很简单:pd.read_hdf()返回的是读取到的DataFrame数据,不是可用于写入操作的HDFStore连接对象,自然没有put()这个方法。
正确的操作方式
要给已有的HDF5文件追加新的DataFrame,你需要用pd.HDFStore()以读写模式打开文件(默认就是读写模式,显式加mode='a'更稳妥,代表追加/修改模式),具体步骤看下面的例子:
首先先准备好你要添加的新DataFrame:
import pandas as pd import numpy as np # 示例新DataFrame,替换成你自己的数据即可 newdf = pd.DataFrame(np.random.randn(5, 3), columns=['Col1', 'Col2', 'Col3'])
方法1:显式管理连接
# 打开HDF5文件(mode='a'确保可以追加内容) db = pd.HDFStore("database.h5", mode='a') # 写入新的数据集 db.put("A3", newdf, format='table', data_columns=True) # 务必关闭连接,避免资源泄漏 db.close()
方法2:用上下文管理器(更推荐)
这种方式会自动帮你关闭连接,不用手动记着close(),更安全省心:
with pd.HDFStore("database.h5", mode='a') as db: db.put("A3", newdf, format='table', data_columns=True)
为什么之前的代码会报错?
你之前写的db = pd.read_hdf("database.h5"),这里的db其实是从HDF5文件里读取出来的那个数据集(比如你之前存入的"A1"),是一个标准的DataFrame对象,而不是能操作HDF5文件的HDFStore实例,所以调用put()方法肯定会报错啦。
内容的提问来源于stack exchange,提问作者Claudiu Creanga
相关产品推荐
相关产品推荐

