PANDAS/Python检查2个数据集的值是否相等,并将1&0更改为True或False

hgc7kmma  于 2023-01-03  发布在  Python
关注(0)|答案(1)|浏览(164)

我想检查两个数据集中的值是否相等。但是数据集的顺序不一样,所以需要遍历数据集。
数据集1合同:enter image description here
部件编号|H50| H51| H53编号001| 1个|1个|1个编号002| 1个|1个|1个编号003|无|1个|0编号004| 1个|1个|1个编号005| 1个|1个|1个
数据2和:enter image description here
因此,部件编号的顺序不同,但要检查每个文件的部件编号值是否相同。如果部件编号相同,则检查H列是否也相同。如果部件编号和H(标题)编号相同,则检查值是否相同。
部件编号|H50| H51| H53编号001| 1个|1个|1个编号003|无|无|1个编号004|无|1个|1个编号002| 1个|无|1个编号005| 1个|1个|1个
预期结果:
如果两个数据集的值1 == 1或0 == 0-〉更改为TRUE。如果数据集1中的值= 1,但数据集2中的值= 0-〉更改为FALSE。并将包含FALSE值的所有行安全保存到Excel文件名"不在合同中"如果数据集1中的值= 0,但数据集2中的值= 1-〉更改为FALSE
预期结果示例
部件编号|H50| H51| H53编号001|正确|正确|真实ID002|正确|错误|真实ID003|正确|错误|错误ID004|错误|正确|真实ID005|正确|正确|正确

6ojccjat

6ojccjat1#

df_merged = df1.merge(df2, on='Part number')
a = df_merged[df_merged.columns[df_merged.columns.str.contains('_x')]]
b = df_merged[df_merged.columns[df_merged.columns.str.contains('_y')]]
out = pd.concat([df_merged['Part number'], pd.DataFrame(a.values == b.values, columns=df1.columns[1:4])], axis=1)
out

    Part number H50 H51 H53
0   ID001   True    True    True
1   ID002   True    False   True
2   ID003   True    False   False
3   ID004   False   True    True
4   ID005   True    True    True

相关问题