熊猫:如果两个字段在数据框中匹配,则添加布尔列

时间:2020-03-30 08:16:39

标签: python pandas statistics

我是熊猫的新手,有点挣扎。我有两个带有几条100000s行的大型数据框。我提取了两者的两列,如果两个字段中的两个字段完全匹配,则想在第一个数据集中添加布尔值。例如:

   0  1
0  a  b
1  a  c
2  a  d
3  a  e
4  b  a
5  b  b
6  b  c
7  b  d
######
   0  1
0  a  b
1  a  c
2  d  e
3  k  g
4  b  a

我希望得到结果:

   0  1  2
0  a  b  True
1  a  c  True
2  a  d  False
3  a  e  False
4  b  a  True
5  b  b  False
6  b  c  False
7  b  d  False

我尝试了不同的方法,但是没有一个起作用:

t3 = (t1[[0]].isin(t2[[0]])) & (t1[[1]].isin(t2[[1]]))

    0   1
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN
4 NaN NaN
5 NaN NaN
6 NaN NaN
7 NaN NaN

我想解决方案非常简单,但是我找不到解决方法。

非常感谢!

1 个答案:

答案 0 :(得分:3)

DataFrame.merge与左联接一起使用,而没有参数on来通过两个DataFrame中列的交集进行联接,然后在rename列中测试both Series.eq的值:

df = df1.merge(df2, indicator=True, how='left').rename(columns={'_merge':2})
df[2] = df[2].eq('both')
print (df)
   0  1      2
0  a  b   True
1  a  c   True
2  a  d  False
3  a  e  False
4  b  a   True
5  b  b  False
6  b  c  False
7  b  d  False