Rozważmy następujący hdfstore
i dataframes df
i df2
Czy mogę zaktualizować 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
Chcę najpierw napisać df
do sklepu.
store.append('df', df)
store.get('df')
C
A B
0 X 0
Y 1
Z 2
1 X 3
Y 4
Z 5
W późniejszym czasie będzie mam inny dataframe że chcę zaktualizować sklepu z. Chcę zastąpić wiersze tymi samymi wartościami indeksu, jakie są w mojej nowej ramce danych, zachowując stare.
Kiedy zrobić
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
To nie jest w ogóle to, co chcę. Zauważ, że (0, 'X')
i (1, 'X')
są powtarzane. Potrafię manipulować połączoną ramką danych i nadpisywać, ale spodziewam się pracować z dużą ilością danych, w których nie byłoby to możliwe.
Jak zaktualizować sklep, aby uzyskać?
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
Zobaczysz, że dla każdego poziomu 'A'
, 'Y'
i 'Z'
są takie same, 'V'
i 'W'
są nowe, a 'X'
jest aktualizowana.
Jaki jest prawidłowy sposób to zrobić?
można pracować z normalnymi indeksami (nie wielomaindeksami)? – MaxU
Tak ... Moje rzeczywiste dane mają wiele indeksów, ale jeśli pokazujesz coś z pojedynczym indeksem, jestem z tego zadowolony. – piRSquared
OK, potrzebuję trochę czasu na przygotowanie prezentacji ... – MaxU