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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage