Я пытаюсь объединить их в столбце 1, а затем присвоить значение столбца 2 из df2 в df1.
Это мой код:
Код: Выделить всё
df1 = df1.reset_index()
merged = df1.merge(df2, on='Column1', how='left', indicator=True, suffixes=('_df1', '_df2'))
mask = (
(df1['Column1'].notna()) &
(merged['_merge'] == 'both')
)
df1.loc[mask, 'Column2'] = merged.loc[mask, 'Column2_df2']
I пробовал добавить reset_index при использовании .loc, вообще не сбрасывая индексы, но результат тот же.
Вот пример моих фреймов данных:
(я включу индексы которые не имеют отношения к этому примеру ввода, поскольку я работаю с большими фреймами данных с миллионами записей, я не могу придумать другого способа выразить это)
Код: Выделить всё
#input
df1 = pd.DataFrame({'Column1': ['A', 'B', None, 'D'],
'Column2': [None, None, None, None]
})
df2 = pd.DataFrame({'Column1': ['B', 'C', 'E', 'A'],
'Column2': [10, 20, 30, 40]
})
# output of merged:
Column1_df1 Column1_df2 Column2_df1 Column2_df2 _merge
44 A A None 40 both
57 B B None 10 both
# output of df1 after .loc:
Column1 Column2
0 A 30
1 B 10
3 None None
6 D None
# expected output of df1 after .loc:
Column1 Column2
44 A 30
57 B 40
3 None None
6 D None
Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-pandas