Betrachten Sie die folgende hdfstore
und Datenrahmen df
und df2
Kann ich einen HDFStore aktualisieren?
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
Ich möchte zuerst df
in den Laden schreiben.
store.append('df', df)
store.get('df')
C
A B
0 X 0
Y 1
Z 2
1 X 3
Y 4
Z 5
Zu einem späteren Zeitpunkt wird habe ich eine andere Datenrahmen, die ich mit in den Laden aktualisieren möchten. Ich möchte die Zeilen mit den gleichen Indexwerten wie in meinem neuen Datenrahmen überschreiben, während die alten beibehalten werden.
Als ich
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
dies tun, ist nicht das, was ich will. Beachten Sie, dass (0, 'X')
und (1, 'X')
wiederholt werden. Ich kann den kombinierten Datenrahmen manipulieren und überschreiben, aber ich erwarte, mit vielen Daten zu arbeiten, wo dies nicht möglich wäre.
Wie aktualisiere ich den Laden zu bekommen?
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
Sie werden feststellen, dass 'A'
, von 'Y'
Für jede Ebene sehen und "Z'
sind die gleichen, 'V'
und 'W'
neu sind, und 'X'
aktualisiert wird.
Was ist der richtige Weg, dies zu tun?
können Sie arbeiten mit normalen (nicht Multiindex) Indizes? – MaxU
Ja ... meine echten Daten haben Multiindex, aber wenn Sie etwas mit einem einzigen Index zeigen, bin ich damit zufrieden. – piRSquared
OK, ich brauche etwas Zeit für die Vorbereitung einer Demo ... – MaxU