Python 获取dataframe中多个列的匹配行

Python 获取dataframe中多个列的匹配行,python,pandas,Python,Pandas,考虑我的第一个数据帧df1 col1 col2 col3 0 hello q 1 1 world q 2 2 welcome r 3 3 hello t 4 和第二数据帧df2 col1 col2 col3 0 hello q 2 需要像这样的输出吗 col1 col2 col3 0 hello q 2 1 world q

考虑我的第一个数据帧
df1

      col1 col2  col3
0    hello    q     1
1    world    q     2
2  welcome    r     3
3    hello    t     4

和第二数据帧
df2

    col1 col2  col3
0  hello    q     2

需要像这样的输出吗

      col1 col2  col3
0    hello    q     2
1    world    q     2
2  welcome    r     3
3    hello    t     4
'col1'
'col2'
应该相等,如果
'col3'
不同,则首先获取输出并替换数据帧中的值

我尝试使用
merge

df1.merge(df2, on=['col1', 'col2'])

    col1 col2  col3_x  col3_y
0  hello    q       1       2
但我不知道下一步该怎么办。

选项1
合并
追加
删除重复项

df1.drop('col3', 1).merge(df2).append(df1).drop_duplicates(['col1', 'col2'])

      col1 col2  col3
0    hello    q     2
1    world    q     2
2  welcome    r     3
3    hello    t     4

选择2
设置索引
先合并

cols = ['col1', 'col2']
df2.set_index(cols).combine_first(
    df1.set_index(cols)
).reset_index().astype(df1.dtypes)

      col1 col2  col3
0    hello    q     2
1    hello    t     4
2  welcome    r     3
3    world    q     2

first.loc[first['col1'].isin(second['col1']),'col1']可以为一列获取匹配的行,该列只能工作,因为要替换的行恰好具有相同的索引值。对于所选的玩具数据来说,这似乎是巧合。同意OP的说法,他们希望在col1和col2上进行匹配,而不是索引。谢谢。