@Ars ML
You can concatenate the two DataFrames vertically and remove duplicates from 'index' column, keeping only the last occurrence of each index value
df1 = pd.DataFrame({'index': [1, 2], 'column': ['A1', 'A2']})
df2 = pd.DataFrame({'index': [2, 3], 'column': ['A2_new', 'A3']})
merged_df = pd.concat([df1, df2]).drop_duplicates(subset=['index'], keep='last')
merged_df.set_index('index', inplace=True)
outputs as per your desired outcome.
1 A1
2 A2_new
3 A3
You can also use merge, it is more involved but produces your desired outcome.
merge_chain = pd.merge(df1, df2, on='index', how='outer') \
.assign(column=lambda x: x['column_y'].fillna(x['column_x'])) \
.drop(['column_x', 'column_y'], axis=1) \
.set_index('index')
df1 = df2.reindex(df1.index.union(df2.index)).fillna(df1)work for your use case?