首页 > 解决方案 > 熊猫匹配/比较多列

问题描述

我想按两列比较两个熊猫表。考虑以下示例:我想获得一个布尔系列,它仅在两个条件匹配时才指示为真。我试过 is.in() 没有太大成功。我可以在两个数据帧中循环“一个”或将两个列组合(添加)在一起,但是熊猫的一些内置功能是否允许涉及两对列的这种(嵌套)比较?

tab1 = pd.DataFrame({"One": [1, 1, 2, 3],
                     "Two": ["A", "B", "C", "C"]})

tab2 = pd.DataFrame({"One": [1, 2, 2, 3, 3],
                     "Two": ["A", "A", "B",  "A","C"]})

# Desired Result (New column in tab1): [True, False, False, True]

编辑:第二个表更像是一个查找表。它们没有相同的形状。应该更清楚地说明这一点。

标签: pythonpandascomparison

解决方案


tab1.eq(tab2).all(1)
0     True
1    False
2    False
3     True
dtype: bool

更新

tab1.merge(tab2,indicator=True,how='left')['_merge'].eq('both')
0     True
1    False
2    False
3     True
Name: _merge, dtype: bool

推荐阅读