比较具有给定容差范围的两个数据帧
Comparing two data frames with a given tolerance range
我有两个具有相同列数和相同行大小的数据框。我正在比较 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: differences = np.zeros(len(df1))
for i in df1:
differences += np.where(df1[i]!=df2[i],1,0)
print(differences)
输出是一个数组,其中returns每行之间的差异数:
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.]
我有两个具有相同列数和相同行大小的数据框。我正在比较 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: differences = np.zeros(len(df1))
for i in df1:
differences += np.where(df1[i]!=df2[i],1,0)
print(differences)
输出是一个数组,其中returns每行之间的差异数:
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.]