我有两个数据框(从csvs读取),具有相同的列,但可能不同的行。我正在尝试产生第三个数据框,该数据框的左侧为索引,并且每列的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的行。这将引发“只能比较标记相同的DataFrame对象”错误。
我在想np.where不够灵活吗?任何建议将不胜感激!
答案 0 :(得分:1)
在这种情况下,您可能需要使用eq
df1.eq(df2)
Col1 Col2 Col3
ID
100 True True True
101 True True True
102 False False False
105 False False False