Обновление строки 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?