布尔值比较两个数据帧



我有两个具有相同列的dataframes(从CSV读取),但可能不同。我正在尝试产生第三个数据框架,该数据框在左侧具有索引,并且在给定索引记录的匹配的每一列中,每个列的真实或错误值。这是一个简单的示例

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

最新更新