С учетом следующих фреймов данных:
df = pd.DataFrame([["11","1", "2"], ["12","1", "2"], ["13","3", "4"]],
columns=["ix","a", "b"])
df1 = pd.DataFrame([["22","8", "9"], ["12","10", "11"], ["23","12", "13"]],
columns=["ix","c", "b"])
df df1
ix a b ix c b
0 11 1 2 0 22 8 9
1 12 1 2 1 12 10 11
2 13 3 4 2 23 12 13
если мы выполним df.update(df1)
, это обновит весь столбец ix
& b
кадра данных - df
, так как номер индекса для обоих кадров данных одинаков.
Однако я пытался установить столбец ix
в качестве индекса для обоих кадров данных и пытался обновить первый, как показано ниже:
df_new = df.set_index('ix').rename_axis(None).update(df1.set_index('ix').rename_axis(None))
Однако это ничего не возвращает.
Я ожидал, что это вернет фрейм данных со столбцом b
, обновленным для df
, где ix
из df1
и df
совпадают. Что-то вроде:
a b
11 1 2
12 1 11
13 3 4
Я что-то здесь упускаю? Разве df.update()
не предназначен для выполнения в копии кадра данных? Может кто-нибудь объяснить мне, почему это происходит.