Обновление строки DataFrame для панд со словарем

Я обнаружил поведение в пандах DataFrames, которое я не понимаю.

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

Но если я попытаюсь добавить словарь, я получу это:

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

Почему это происходит? В процессе написания этого вопроса я понял, что, скорее всего, df.loc берет только ключи из new_data, что также объясняет, почему значения вышли из строя. Но опять же, почему это так? Если я пытаюсь создать DataFrame из словаря, он обрабатывает ключи, как если бы они были столбцами:

pd.DataFrame([new_data])

#    col1   col2    col3
#0  new     new     new

Почему это не поведение по умолчанию в df.loc?

Ответы на вопрос(1)

Ваш ответ на вопрос