Python 比较具有给定公差范围的两个数据帧
我有两个数据帧,列数相同,行大小相同。我比较了df1中的第一行和df2中的第一行,以及df1中的第二行和df2中的第二行,以此类推,看看有多少特征差异。此代码工作正常,但它与实际匹配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:
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函数和。