我想匹配python中的两个dataframe列

时间:2019-01-27 08:12:25

标签: python pandas dataframe

我有两个数据帧df1(记录35k)和df2(记录100k)。在df1 ['col1']和df2 ['col3']中,我有唯一的ID。我想将df1 ['col1']与df2 ['col3']匹配。如果它们匹配,我想用另外一列更新df1,说df1 ['Match']的值为true,如果不匹配,则更新为False。我只想针对匹配和不匹配的记录映射这个TRUE和False值。

我正在使用.isin()功能,我得到了正确的匹配,但没有匹配计数,但是无法正确映射它们。

Match = df1['col1'].isin(df2['col3'])
df1['match'] = Match

我还通过传递参数how=right使用了合并功能,但没有得到结果。

2 个答案:

答案 0 :(得分:0)

使用df.loc索引:

df1['Match'] = False
df1.loc[df1['col1'].isin(df2['col3']), 'Match'] = True

答案 1 :(得分:0)

您可以简单地执行以下操作:

df1['Match'] = df1['col1'].isin(df2['col3'])

例如:

import pandas as pd
data1 = [1,2,3,4,5]
data2 = [2,3,5]
df1 = pd.DataFrame(data1, columns=['a'])
df2 = pd.DataFrame(data2,columns=['c'])
print (df1)
print (df2)
df1['Match'] = df1['a'].isin(df2['c']) # if matches it returns True else False
print (df1)

输出:

  a
0  1
1  2
2  3
3  4
4  5

   c
0  2
1  3
2  5

   a  Match
0  1  False
1  2   True
2  3   True
3  4  False
4  5   True