【问题标题】:Comparing data frames with a level of error将数据帧与错误级别进行比较
【发布时间】:2019-10-15 12:35:16
【问题描述】:

我有两个数据框

df_schematic

  layer     x          y
0   18  -10850.0    -6550.0
1   18  -10850.0    -5750.0
2   18  -10950.0    -5850.0
3   18  -10950.0    -5450.0
4   31  -10850.0    -5350.0
5   14  -10850.0    -4950.0
6   17    2945.5     6550.0

2278 rows × 3 columns

df_report

  layer  x        y
0   18  9161.19 -3106.42
1   18  9141.51 -3185.38
2   18  9023.40 -3185.38
3   18  9003.71 -3106.42
4   18  8800.20 -2840.65
5   17   2945.8  6549.6

2216 rows × 3 columns

我正在尝试将 df_schematic 与报告进行比较,并找出报告中的任何缺失或不规则值。主要问题是我们对坐标的容忍度。 例如:

17 2945.5 6550.0

17 2945.8 6549.6

显然不相等,但它们应作为正确条目传递,因为错误级别为 +/-0.5。 有什么方法可以找出缺失值,同时牢记公差。

【问题讨论】:

  • 我们使用您提供的数据来运行我们的代码。因此,您应该在两个数据框中都包含您的“相似”数据,并向我们展示您需要的输出类型。
  • 我不明白你试图暗示框架中的数据是需要相互比较的实际数据,具有一定的抗错性
  • 我的意思是 17 2945.5 6550.0 不在第一个 df 中,17 2945.8 6549.6 不在第二个 df 中。无论如何,您放置的 2 个数据帧的输出是什么?
  • 很抱歉,df_schematic 中存在但 df_report 中缺少的所有缺失值到单独的数据框中,我会尝试改进我的问题,谢谢
  • layer 栏是否重要?例如,如果第一个 df 有 18 -10850.0 -6550.0 而第二个 df 有 21 -10850.0 -6550.0 (只有层列不同)。是否认为相同?

标签: python-3.x pandas dataframe data-science


【解决方案1】:

np.isclose 做一些实验。

我的意思是以下场景:

  • 编写一个函数,比如 isClose,比较一对坐标 (x1, y1) 与 另一对(x2,y2),来自 2 个源行,类似于 np.isclose(x1, x2, atol=0.5) & np.isclose(y1, y2, atol=0.5)
  • df_schematic 中的一行作为“基点”:
    • df_report 中找到所有 完全 layer 值相等的行,
    • 对于每一行检查 isClosexy 两行的坐标, 直到你找到这个函数返回 True 的地方。
  • df_schematic 中的每一行重复此过程。

【讨论】:

  • 感谢您的回答,我当然不知道 np.isclose() @Valdi_Bo
猜你喜欢
  • 1970-01-01
  • 2021-12-24
  • 2016-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 2016-08-26
相关资源
最近更新 更多