python – 我可以更新HDFStore吗?
发布时间:2020-12-16 22:32:20 所属栏目:Python 来源:网络整理
导读:请考虑以下hdfstore和dataframes df和df2 import pandas as pdstore = pd.HDFStore('test.h5') midx = pd.MultiIndex.from_product([range(2),list('XYZ')],names=list('AB'))df = pd.DataFrame(dict(C=range(6)),midx)df CA B 0 X 0 Y 1 Z 21 X 3 Y 4 Z 5 m
请考虑以下hdfstore和dataframes df和df2
我想先把df写到商店.
在稍后的时间点,我将有另一个数据帧,我想用它来更新商店.我希望用新数据帧中的索引值覆盖行,同时保留旧数据帧. 当我做
这根本不是我想要的.请注意,重复(0,’X’)和(1,’X’).我可以操纵组合的数据帧和覆盖,但我希望能够处理大量数据,这是不可行的. 如何更新商店才能获得?
你会看到,对于每个级别的’A’,’Y’和’Z’是相同的,’V’和’W’是新的,’X’是更新的. 这样做的正确方法是什么? 最佳答案
想法:首先从HDF中删除匹配的行(具有匹配的索引值),然后将df2附加到HDFStore.
问题:对于多索引索引,我找不到使用where =“index in df2.index”的方法. 解决方案:首先将多索引转换为普通索引:
这会产生:
确保在创建/附加HDF5文件时使用format =’t’和data_columns = True(这将索引保存索引并索引HDF5文件中的所有列,允许我们在where子句中使用它们):
现在我们可以先用匹配的索引从HDFStore中删除这些行:
并附加df2:
结果:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |