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上进行匹配,而不是索引。谢谢。