Сравнение фреймов данных с уровнем ошибки - PullRequest
0 голосов
/ 15 октября 2019

У меня есть два кадра данных:

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. Есть ли способ выяснить пропущенные значения и при этом помнить о допуске.

1 Ответ

1 голос
/ 15 октября 2019

Проведите несколько экспериментов с 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 ,
    • для каждого такогопроверка строки isClose для x и y координат из обеих строк, пока вы не найдете точку, в которой эта функция возвращает True .
  • Повторите эту процедуру для каждой строки из df_schematic .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...