我有 2 个表,表 p 和表 q。表 p 的内容将从表 q 更新。
表 p:
A B C
1 45 22 25
2 34 46 56
3 59 55 44
表 q:
A B C
1 34 46 59
2 59 55 49
我想根据"A"和"B"列合并这两个表,这样如果表 p 中的"A"、"B"值在表 q 中不存在,则表 p 中 B 列中的值是相同的。
试:
p['A'] = pd.merge(q, on=['A','B'], how='left')['C']
输出:
A B C
1 45 22 NaN
2 34 46 59
3 59 55 49
期望输出:
A B C
1 45 22 25
2 34 59 59
3 59 55 49
我可以创建一个不同的列并合并,然后合并回表 p 的"A"列,但这似乎很长。有没有更直接的方法可以做到这一点?
您可以使用update
keycol=['A','B']
df1=df1.set_index(keycol)
df1.update(df2.set_index(keycol))
df1
Out[762]:
C
A B
45 22 25.0
34 46 59.0
59 55 49.0
df1.reset_index()
Out[763]:
A B C
0 45 22 25.0
1 34 46 59.0
2 59 55 49.0
map
的另一种解决方案
df1.A.map(df2.set_index('A').B).fillna(df1.B)
Out[727]:
1 22.0
2 59.0
3 99.0
Name: A, dtype: float64