比较Python中具有可接受偏差的数据帧列



考虑到可接受的偏差而不是100%的匹配,如何在两个panda数据帧行之间进行比较?

例如,在可接受偏差=10的情况下,我想在其他列的基础上生成下面的Result列:

column1 | column2 | Result
100     | 110     | True
0       | 20      | False
0       | 9       | True

我找不到任何内置函数或Pandas函数。

一种简单的方法:

c1 = df['column1']
c2 = df['column2']
dev = 10
df['Result'] = (c2 - c1 <= dev) & (c1 - c2 >= -dev)

输出:

>>> df
column1  column2  Result
0      100      110    True
1        0       20   False
2        0        9    True

另一种解决方案:

dev = 10
diff = df.diff(axis=1)['column2']
df['Result'] = (diff <= dev) & (diff >= -dev)

输出:

>>> df
column1  column2  Result
0      100      110    True
1        0       20   False
2        0        9    True

这应该可以工作。在管道中使用assign

acc_dev = 10
data = pd.DataFrame(
[
[100, 110, True],
[0, 20, False],
[0, 9, True],
],
columns = ["column1", "column2", "Result"]
)
data.assign(Result=lambda d: abs(d["column1"] - d["column2"]) <= 10)

使用:

df['Result'] = abs(df['column1'] - df['column2']) <= 10
print(df)
# Output:
column1  column2  Result
0      100      110    True
1        0       20   False
2        0        9    True

可供选择的链式方法:

df['Result'] = df['column1'].sub(df['column2']).abs().le(10)

相关内容

最新更新