【发布时间】:2020-04-17 15:38:45
【问题描述】:
我有两个数据框,我想逐行比较它们,并将结果存储在一个新的中。
我想要的是进行条件比较,如果 df1 中的值与 df2 中的值不同(或大于容差),我们希望将 df2 中的值复制到新数据框中。如果值相同(或在容差范围内),则在新数据框中返回 null。
对于每一列,我会添加一个容差: 年龄容忍度:3,工资容忍度:500,奖金容忍度:100
df1 = pd.DataFrame({'Age':[22,55,35],'salary':[1500,2000,1000],'bouns':[500,222,124]})
df2 = pd.DataFrame({'Age':[23,55,65],'salary':[1400,1000,3000 ],'bouns':[100,222,500]})
In [3]: df1
Age salary bonus
0 22 1500 500
1 55 2000 222
2 35 1000 124
In [3]: df2
Age salary bonus
0 23 1400 100
1 55 1000 222
2 65 3000 500
输出应该是这样的:
In [4]: df3
Age salary bonus
0 100
1 1000
2 65 3000 500
我尝试使用 isclose 函数将两个数据帧中的值与特定容差进行比较。它工作正常。但它返回布尔值 true 或 false。
df3 = np.isclose(df1["Age"], df2["Age"], atol=3)
我想用if-else语句,所以如果条件为True,返回null,如果为False,返回df2中的值。
【问题讨论】:
-
答案有帮助吗?不要忘记您可以投票并接受答案。见What should I do when someone answers my question?,谢谢!