Python 3.x 两个数据帧中每个值的布尔比较
我有两个数据帧(从CSV读取),列相同,但行可能不同。我试图生成第三个数据帧,该数据帧的索引位于左侧,对于与给定索引记录匹配的每一列,都有一个TRUE或FALSE值。这里有一个简单的例子Python 3.x 两个数据帧中每个值的布尔比较,python-3.x,pandas,Python 3.x,Pandas,我有两个数据帧(从CSV读取),列相同,但行可能不同。我试图生成第三个数据帧,该数据帧的索引位于左侧,对于与给定索引记录匹配的每一列,都有一个TRUE或FALSE值。这里有一个简单的例子 df1 = pd.DataFrame(np.array([ ['100', 'a', 1, 'aa'], ['101', 'b', 2, 'bb'], ['102', 'c', 3, 'cc']]), columns=['ID', 'Col1', 'Col2', 'Col3'])
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
您是否介意为我们提供一些具有预期结果(比较结果)的示例(具有不同记录数的两个数据帧)?