我是熊猫的新手,有点挣扎。我有两个带有几条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
我想解决方案非常简单,但是我找不到解决方法。
非常感谢!
答案 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