【发布时间】:2021-07-09 19:32:05
【问题描述】:
我有两个数据框(从 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 不够灵活?任何建议将不胜感激!
【问题讨论】:
-
您是否介意为我们提供一些具有预期结果(比较结果)的示例(具有不同记录数的两个数据帧)?
标签: python-3.x pandas