【发布时间】:2022-01-16 21:54:22
【问题描述】:
我有两个具有相同大小和相同变量的数据框。
df1 size: (50, 3)
df2 size: (50, 3)
在我的代码中,我使用 np.isclose 函数返回一个布尔数组,其中两个数组在容差范围内按元素相等:
feature_1 = np.isclose(df1["SepalLengthCm"], df2["SepalLengthCm"], atol=10)
feature_2 = np.isclose(df1["SepalWidthCm"], df2["SepalWidthCm"], atol=20)
feature_3 = np.isclose(df1["PetalLengthCm"], df2["PetalLengthCm"], atol=30)
代码运行正常,没有任何错误。 但对我来说,问题是我想让这个过程更加通用和自动化。换句话说,它应该适用于任何其他数据集。
重要的是我不想在代码中指定列名。所以我想使用for 循环自动遍历每一列并做同样的事情。
我不想像feature_1 feature_2 feature_3 那样为每一列设置三个代码(行),我想编写一个代码(行)来为任意数量的列执行相同的工作。像这样的:
feature = np.isclose(df1[columnn], df2[columnn], atol=i)
atol的参数也要提前预定义,例如i = [10, 20, 30]
【问题讨论】:
-
那么你需要
f = lambda col,atol: np.isclose(df1[col], df2[col], atol=atol)吗?