首页 > 解决方案 > 将数据框列与条件进行比较

问题描述

我有2个数据框如下:

df1:

ID   col1   col2    
1     A1     B1    
2     A2     B2     
3     A3     B3   
4     A4     B4   
5     A5     B5    
6     A6     B6    

df2:

col1   col2   
 A1     B1     
 A2     O5   
 H3     B3     
 A4     B4    
 A5     66     
 A6     C6     

预期结果:我想根据条件生成结果 df - df1 的 col1、col2 中的每个值都应该存在于 df2 的 col1、col2 值中

预期结果df:

ID   col1   col2     Error
1     A1     B1      No mismatch with df2
2     A2     B2      col2 mismatch with df2
3     A3     B3      col1 mismatch with df2
4     A4     B4      No mismatch with df2
5     A5     B5      col2 mismatch with df2
6     A6     B6      col2 mismatch with df2

标签: pythonpandasdataframe

解决方案


像这样的东西应该可以解决问题,但可能有更简单的方法。

diff = pd.concat([df1[col] == df2[col] for col in df1], axis=1)

def m(row):
    mismatches = []
    for col in diff.columns:
        if not row[col]:
            mismatches.append(col)
    if mismatches == []:
        return 'No mismatch'
    return 'Mismatches: ' + ', '.join(mismatches)

df1['Error'] = diff.apply(m, axis=1)

推荐阅读