我有两个具有相同列的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