Python 比较具有给定公差范围的两个数据帧

Python 比较具有给定公差范围的两个数据帧,python,arrays,pandas,comparison,Python,Arrays,Pandas,Comparison,我有两个数据帧,列数相同,行大小相同。我比较了df1中的第一行和df2中的第一行,以及df1中的第二行和df2中的第二行,以此类推,看看有多少特征差异。此代码工作正常,但它与实际匹配 Df1: var1 var2 var 3 1 30 65 100 2 40 32 200 3 25 64 500 Df2: var1 var2 var 3 1 30 65 100 2 80 77

我有两个数据帧,列数相同,行大小相同。我比较了df1中的第一行和df2中的第一行,以及df1中的第二行和df2中的第二行,以此类推,看看有多少特征差异。此代码工作正常,但它与实际匹配

Df1:

    var1  var2  var 3
1   30     65    100
2   40     32    200
3   25     64    500

Df2:

    var1  var2  var 3
1   30     65    100
2   80     77    50
3   22     60    499
输出是一个数组,返回每行之间的差异数:

In: print(differences)
         [0. 3. 3.]
所有这些都很好,但我想在比较数值时考虑公差范围。因此,值不必完全相同,我将添加一个公差范围5。所以,如果df1中的值是25,df2中的值是22,那么它应该是相同的。 所需输出为:

In: print(differences)
         [0. 3. 0.]
因为如果我们查看df1和df2中的第三行,这些值在公差范围内(如果为5)。
有没有实施这个的想法

尝试使用
np.isclose()

differences = np.zeros(len(df1))
for i in df1:
    differences += np.where(~np.isclose(df1[i],df2[i],atol = 5),1,0)
print(differences)
[0. 3. 0.]
输出:

differences = np.zeros(len(df1))
for i in df1:
    differences += np.where(~np.isclose(df1[i],df2[i],atol = 5),1,0)
print(differences)
[0. 3. 0.]

看看Numpy函数和。