熊猫用另一个数据框的值替换一个数据框的值

时间:2020-10-24 18:40:59

标签: python pandas

我有两个熊猫数据框

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

2 个答案:

答案 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