Python 3.x 两个数据帧中每个值的布尔比较

Python 3.x 两个数据帧中每个值的布尔比较,python-3.x,pandas,Python 3.x,Pandas,我有两个数据帧(从CSV读取),列相同,但行可能不同。我试图生成第三个数据帧,该数据帧的索引位于左侧,对于与给定索引记录匹配的每一列,都有一个TRUE或FALSE值。这里有一个简单的例子 df1 = pd.DataFrame(np.array([ ['100', 'a', 1, 'aa'], ['101', 'b', 2, 'bb'], ['102', 'c', 3, 'cc']]), columns=['ID', 'Col1', 'Col2', 'Col3'])

我有两个数据帧(从CSV读取),列相同,但行可能不同。我试图生成第三个数据帧,该数据帧的索引位于左侧,对于与给定索引记录匹配的每一列,都有一个TRUE或FALSE值。这里有一个简单的例子

df1 = pd.DataFrame(np.array([
    ['100', 'a', 1, 'aa'],
    ['101', 'b', 2, 'bb'],
    ['102', 'c', 3, 'cc']]),
    columns=['ID', 'Col1', 'Col2', 'Col3']).set_index('ID')
df2 = pd.DataFrame(np.array([
    ['100', 'a', 1, 'aa'],
    ['101', 'b', 2, 'bb'],
    ['102', 'c', 3, 'cb']]),
    columns=['ID', 'Col1', 'Col2', 'Col3']).set_index('ID')

df3 = pd.DataFrame(np.where(df1==df2,True,False),
                   columns=df1.columns,
                   index=df1.index)
print(df3)
这将产生:

ID                    
100  True  True   True
101  True  True   True
102  True  True  False
我遇到的问题是,记录的数量会有所不同,可能会出现故障。df1中可能有一行ID为104,df2中可能有一行ID为105。这导致抛出“只能比较相同标记的数据帧对象”错误


我在想np,哪里不够灵活?任何建议都将不胜感激

在这种情况下,您可能需要使用
eq

df1.eq(df2)
      Col1   Col2   Col3
ID                      
100   True   True   True
101   True   True   True
102  False  False  False
105  False  False  False

您是否介意为我们提供一些具有预期结果(比较结果)的示例(具有不同记录数的两个数据帧)?