如何逐行比较两个数据帧,添加标签(True/False)?
How can I compare two dataframes, row by row, adding a label (with True/False)?
我想比较两个列名称相同的数据框。我想创建另一个带有标签的附加列的数据框。如果 val1 = val1 且 val2=val2 则加 1 (True),否则加 0 (False)。
df1:
val1 val2
3 4
1 2
6 7
8 9
df2:
val1 val2
3 4
1 6
6 7
8 0
我希望我有这样的结果:
df_new:
val1 val2 Label
3 4 1
1 2 0
6 7 1
8 9 0
我该怎么做?
使用 indicator=
参数尝试 .merge
:
x = df1.merge(df2, on=["val1", "val2"], indicator="Label", how="left")
x.Label = x.Label.eq("both").astype(int)
print(x)
打印:
val1 val2 Label
0 3 4 1
1 1 2 0
2 6 7 1
3 8 9 0
如果行都对齐了,直接比较就可以了,
df1["Label"] = (df1 == df2).all(axis=1).astype(int)
我想比较两个列名称相同的数据框。我想创建另一个带有标签的附加列的数据框。如果 val1 = val1 且 val2=val2 则加 1 (True),否则加 0 (False)。
df1:
val1 val2
3 4
1 2
6 7
8 9
df2:
val1 val2
3 4
1 6
6 7
8 0
我希望我有这样的结果:
df_new:
val1 val2 Label
3 4 1
1 2 0
6 7 1
8 9 0
我该怎么做?
使用 indicator=
参数尝试 .merge
:
x = df1.merge(df2, on=["val1", "val2"], indicator="Label", how="left")
x.Label = x.Label.eq("both").astype(int)
print(x)
打印:
val1 val2 Label
0 3 4 1
1 1 2 0
2 6 7 1
3 8 9 0
如果行都对齐了,直接比较就可以了,
df1["Label"] = (df1 == df2).all(axis=1).astype(int)