我有两个具有不同列大小的数据框,其中四个列在两个数据框中可以具有相同的值。我想在 df1 中创建一个新列,如果 df2 中的一行与 df1 中的一行具有相同的“A”、“B”、“C”和“D”列值,则该新列的值为 1 。如果没有这样的行,我希望该值为 0。行“E”和“F”对于检查值并不重要。
是否有一个 pandas 函数可以做到这一点,或者我是否必须循环执行此操作。
例如:
df1 =
A B C D E F
1 1 20 20 3 2
1 1 12 14 1 3
2 1 13 43 4 3
2 2 12 34 1 4
df2 =
A B C D E
1 3 12 14 2
1 1 20 20 4
2 2 21 31 5
2 2 12 34 8
预期输出:
df1 =
A B C D E F Target
1 1 20 20 3 2 1
1 1 12 14 1 3 0
2 1 13 43 4 3 0
2 2 12 34 1 4 1
这相当简单。如果检查两个 DataFrame 是否相等,它会检查每个元素是否等于各自的元素。
col_list = ['A', 'B', 'C', 'D']
idx = (df1.loc[:, col_list] == df2.loc[:, col_list]).all(axis=1)
df1['new_row'] = idx.astype(int)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)