【问题标题】:How can I look for equality with tolerance between 2 cells who have lists of float numbers in Python?如何在 Python 中具有浮点数列表的 2 个单元格之间寻找具有容差的相等性?
【发布时间】:2020-01-12 11:46:41
【问题描述】:

有人可以帮帮我吗?

我有一个包含三列 a、b、c 的数组,并说 100 行

每个单元格都包含一个浮点数列表,如下所示:

[[102.264], [102.376], [102.488], [102.6], [10...  
[[104.718], [104.725], [104.732], [105.771]]

我想做的是对于每一行,将 a 与 b 进行比较,并在 c 中设置具有相等性的浮点数(b 中的值 = a 中的值)和具有近似匹配的浮点数(b 中的值在容差为 a) 中的值,例如 0,1。

我在网上花费了无数个小时,试图找出一些可行但没有成功的方法。

我发现以下方法也许有高级技能的人可以提供帮助:

  • pandas.merge_asof
  • np.isclose

当我尝试上述方法之一时,我会收到错误消息。我真的很菜鸟,因此不知道我必须做什么。我必须最初更改列 a、b、c 的类型吗?我必须将每个列表扩展为 pandas 数组吗?我真的不知道...请帮助

我的预期结果是每行的列 c 具有以下浮点数:

  • b 的值 = a 的值
  • b 的值 = a 的值,公差为 0,01

有人可以帮忙吗?我真的在乞求,我愿意 PayPal..

感谢您抽出宝贵时间阅读本文并提前提供帮助!

结果数组示例: enter image description here

【问题讨论】:

  • 我们可以看看一些代码吗?
  • 您应该包含一个最小数据示例:几行,其中 each cell 包含 3-4 个项目的列表。 I have an array... - 什么样的数组?它是熊猫数据框吗?一个 Numpy 数组?列表列表?
  • 您好,感谢您的快速回复。正如我所说,我是个菜鸟,我认为它是一个 Numpy 数组。下面是一个没有 c 填充的数组示例:abc 0 NaN NaN NaN 1 [104.264], [104.376], [104.488], [104.6], [10 ... [[106.718], [106.725], [106.732], [106.771 ], [... NaN 2 NaN [[104.931], [104.945], [104.959], [104.973], [... NaN
  • 我有点困惑。这是pandas 数据框吗?或者只是一个列表(列表等),或者一个 numpy 数组(如果是这样,shapedtypeisclose 比较 numpy 数组的值 - 但它必须是数字,而不是对象 dtype。如果可以处理浮点数比如naninfallcloseisclose 应用于整个数组。
  • pandas 在单元格中使用列表会变得混乱,尤其是在列表大小不同的情况下。

标签: python pandas numpy range equality


【解决方案1】:

为什么不能通过下面的代码运行 a 和 b 并检查它是否返回 true 或 false?

def check_if_close(a, b):
    if (abs(b-a) < 0.1):
        return True
    else:
        return False

print(check_if_close(9.1, 9.15)) #true
print(check_if_close(8.1, 9.15)) #false
print(check_if_close(7.06, 8.0)) #false
print(check_if_close(7.06, 7.1)) #true

看看这是否满足您的需求。

【讨论】:

  • 我想 OP 在从数据结构中提取值进行比较时遇到问题,而不是在提取后比较它们。
  • 感谢 Mathew,但这并不能真正解决我的问题,因为我比较了 pandas 数组的单元格中的列表。想要将 b 与 a 进行比较并将 a 的所有等于 b 或在 0,1 范围内的值提取到 c 中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 2013-08-18
  • 2013-10-16
  • 1970-01-01
相关资源
最近更新 更多