Мне нужно объединить две точки, когда они находятся в пределах +2,75 и -2,75 друг от друга.Эти две точки находятся в двух отдельных фреймах данных (оба обрабатываются на более ранних этапах конвейера).
Я думаю, что merge_asof может помочь мне в этом случае с допуском 2,75 и направлением «ближайший».
Однако я получаю сообщение об ошибке:
MergeError: ключ должен быть целым числом, отметкой времени или с плавающей запятой
Это один из двух кадров данных:
Unnamed: 0 Section_id Section_location
36015 36015 055_305AR_10.8 397.0
7344 7344 055_305AR_10.8 659.0
Теперь у меня есть второй фрейм данных, также с Section_id и section_locations вроде 402.5.Поэтому я хочу объединить, если (в этом примере) section_location второго фрейма данных больше или равен 394,25 и меньше или равен 399,75.
Я также отсортировал значения обоих фреймов данных с помощью section_id и section_location.
Я попробовал следующий код, который выдает ошибку.
def mergeasof_dfs(df1, df2):
return pd.merge_asof(left = df1, right = df2,
on='Section_id',
by='Section_location',
tolerance = 2.75,
direction = 'nearest'
)
---------------------------------------------------------------------------
MergeError Traceback (most recent call last)
<ipython-input-66-641a0dfae9af> in <module>
----> 1 test = mergeasof_dfs(df1, df2)
<ipython-input-65-bc88146fa086> in mergeasof_dfs(df1, df2)
5 by='Section_location',
6 tolerance = 2.75,
----> 7 direction = 'nearest'
8 )
Ошибка:
MergeError: ключ долженбыть целым числом, отметкой времени или числом с плавающей запятой