У меня есть два кадра данных.Фрейм данных A
:
[distance] [measure]
17442.77000 32.792658
17442.95100 32.792658
17517.49200 37.648482
17518.29600 37.648482
17565.77600 38.287118
17565.88800 38.287118
17596.93700 41.203340
17597.29700 41.203340
17602.16400 41.477979
17602.83900 41.612774
17618.16400 42.479890
17618.71100 42.681591
и фрейм данных B
, который:
[mileage] [Driver]
17442.8 name1
17517.5 name2
17565.8 name3
17597.2 name4
17602.5 name5
17618.4 name6
для каждой строки [mileage]
в фрейме данных B
, я хотел бынайдите две строки из [distance]
в фрейме данных A
, в котором A.loc[(A['distance']>= milage_value) & A['distance']<= mileage_value]
, чтобы я мог получить что-то вроде этого:
17442.77000 32.792658
17442.8 name1
17442.95100 32.792658
17517.49200 37.648482
17517.5 name2
17518.29600 37.648482
. .
. .
Таким образом, я мог бы применить следующую функцию в скользящем окне размером 3:
def f(x):
return df.iloc[0,1]+(df.iloc[2,1]-df.iloc[0,1])*((df.iloc[1,0]-df.iloc[0,0])/(df.iloc[2,0]-df.iloc[0,0]))
a = df.rolling(window=3, min_periods=1).apply(f)[::3].reset_index(drop=True)
До сих пор я объединял два Dfs и значения сортировки для генерации триплетов, как описано выше, но проблема возникает, когда два значения из df B
находятся в диапазоне расстояний в A[distance]
.Любая подсказка / совет очень ценится!