删除HDF文件内Pandas DataFrame行后重启失效,该如何解决?
问题:修改HDF文件读取后的DataFrame,重新读取后数据恢复原状态的原因?
操作步骤
- 读取HDF文件到内存中的DataFrame:
import pandas as pd file = pd.read_hdf('/...mapping_trade_type/BBG002RRB_L3.h5', 'quote')
- 删除DataFrame中的大部分行:
file = file.drop(file.index[5:643368])
此时打印file可见剩余5行,但退出Python Shell后重新读取该quote表,数据又恢复为643368行。
原因及解决方法
- 你只是在内存中修改了DataFrame对象,磁盘上的原始HDF文件完全没被改动。
pd.read_hdf()的作用是把文件内容加载到内存生成DataFrame,后续的drop操作只改变了内存里的临时对象,并没有同步到磁盘文件。 - 要让修改永久生效,需要在删除行后执行
to_hdf()方法,将修改后的DataFrame写回原HDF文件,示例代码:
# 覆盖原quote表的数据 file.to_hdf('/...mapping_trade_type/BBG002RRB_L3.h5', 'quote', mode='w') # 如果文件中有其他表需要保留,可使用追加模式 # file.to_hdf('/...mapping_trade_type/BBG002RRB_L3.h5', 'quote', mode='a')
内容的提问来源于stack exchange,提问作者kfsopdf
相关产品推荐
相关产品推荐

