考慮以下hdfstore
和dataframes df
和df2
我可以更新HDFStore嗎?
import pandas as pd
store = 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
C
A B
0 X 0
Y 1
Z 2
1 X 3
Y 4
Z 5
midx2 = pd.MultiIndex.from_product([range(2), list('VWX')], names=list('AB'))
df2 = pd.DataFrame(dict(C=range(6)), midx2)
df2
C
A B
0 V 0
W 1
X 2
1 V 3
W 4
X 5
我想先寫df
商店。
store.append('df', df)
store.get('df')
C
A B
0 X 0
Y 1
Z 2
1 X 3
Y 4
Z 5
在稍後的時間點,我會說我想更新與賣場的另一個數據幀。我想覆蓋與新數據框中相同索引值的行,同時保留舊數據。
當我做
store.append('df', df2)
store.get('df')
C
A B
0 X 0
Y 1
Z 2
1 X 3
Y 4
Z 5
0 V 0
W 1
X 2
1 V 3
W 4
X 5
這是不是在所有我想要的東西。請注意,(0, 'X')
和(1, 'X')
重複。我可以操縱組合的數據框並進行覆蓋,但我希望能夠處理大量的數據,這是不可行的。
如何更新商店以獲取?
C
A B
0 V 0
W 1
X 2
Y 1
Z 2
1 V 3
W 4
X 5
Y 4
Z 5
你會看到,對於'A'
,'Y'
每一級'Z'
是相同的,'V'
和'W'
是新的,'X'
被更新。
這樣做的正確方法是什麼?
你能工作與正常(而不是多指標)索引? – MaxU
是的......我的真實數據有多重索引,但是如果您使用單一索引顯示某些內容,我對此感到滿意。 – piRSquared
好的,我需要一些時間準備演示... – MaxU