我有两个熊猫数据框
df1 = pd.DataFrame({'A': [1, 3, 5], 'B': [3, 4, 5]})
df2 = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [8, 9, 10, 11, 12], 'C': ['K', 'D', 'E', 'F', 'G']})
两个数据帧的索引均为“ A”。
如何用df2列“ B”的值替换df1列“ B”的值?
df1的结果:
A B 1 8 3 10 5 12
答案 0 :(得分:0)
可能的解决方案之一:
wrk = df1.set_index('A').B
wrk.update(df2.set_index('A').B)
df1 = wrk.reset_index()
结果是:
A B
0 1 8
1 3 10
2 5 12
基于 merge 的另一种解决方案:
df1 = df1.merge(df2[['A', 'B']], how='left', on='A', suffixes=['_x', ''])\
.drop(columns=['B_x'])
答案 1 :(得分:0)
也许正在搜索dataframe.isin()
:
df1['B'] = df2[df2['A'].isin(df1['A'])]['B'].values
print(df1)
打印:
A B
0 1 8
1 3 10
2 5 12