Aktualisieren einer Pandas-DataFrame-Zeile mit einem Wörterbuch
Ich habe in pandas DataFrames ein Verhalten festgestellt, das ich nicht verstehe.
df = pd.DataFrame(np.random.randint(1, 10, (3, 3)), index=['one', 'one', 'two'], columns=['col1', 'col2', 'col3'])
new_data = pd.Series({'col1': 'new', 'col2': 'new', 'col3': 'new'})
df.iloc[0] = new_data
# resulting df looks like:
# col1 col2 col3
#one new new new
#one 9 6 1
#two 8 3 7
Aber wenn ich versuche, stattdessen ein Wörterbuch hinzuzufügen, erhalte ich Folgendes:
new_data = {'col1': 'new', 'col2': 'new', 'col3': 'new'}
df.iloc[0] = new_data
#
# col1 col2 col3
#one col2 col3 col1
#one 2 1 7
#two 5 8 6
Warum passiert dies? Beim Schreiben dieser Frage wurde mir klar, dass df.loc höchstwahrscheinlich nur die Schlüssel aus new_data entnimmt, was auch erklärt, warum die Werte nicht in Ordnung sind. Aber warum ist das so? Wenn ich versuche, einen DataFrame aus einem Wörterbuch zu erstellen, werden die Schlüssel so behandelt, als wären sie Spalten:
pd.DataFrame([new_data])
# col1 col2 col3
#0 new new new
Warum ist das nicht das Standardverhalten in df.loc?