В следующем примере кода извлекаются строки фрейма данных с датами DateTime, ближайшими к серии DateTime (аргумент 1 из merge_asof).
import numpy as np
import pandas as pd
times = [1537625150.819065, 1537625150.919615, 1537625151.019658, 1537625151.120535,
1537625151.220896, 1537625151.320936, 1537625151.420966, 1537625151.520997,
1537625151.621964, 1537625151.721997, 1537625151.822350, 1537625151.923238,
1537625152.023616, 1537625152.123638, 1537625152.224127, 1537625152.324161,
1537625152.424821, 1537625152.525090, 1537625152.625157, 1537625152.725612]
df = pd.DataFrame({'time': times})
df['dt'] = pd.to_datetime((df.time.values * 1e6).astype(np.int64) * 1000)
df.set_index(df.dt, inplace=True)
start = pd.to_datetime(1537625151, unit='s')
end = pd.to_datetime(1537625152, unit='s')
new_df = pd.merge_asof(pd.DataFrame({'desired_dt': pd.date_range(start, end, freq='.25S')}),
df[start:end], left_on='desired_dt', right_on='dt', direction='nearest')
print(new_df)
Вывод выглядит следующим образом:
desired_dt dt
0 2018-09-22 14:05:51.000 2018-09-22 14:05:51.019658
1 2018-09-22 14:05:51.250 2018-09-22 14:05:51.220896
2 2018-09-22 14:05:51.500 2018-09-22 14:05:51.520997
3 2018-09-22 14:05:51.750 2018-09-22 14:05:51.721997
4 2018-09-22 14:05:52.000 2018-09-22 14:05:51.923238
Код выполняет именно то, что я хочу, однако я получаю следующее предупреждение:
FutureWarning: 'dt '- это и уровень индекса, и метка столбца.По умолчанию это столбец, но это вызовет ошибку неоднозначности в будущей версии. Fill_method = fill_method)
Как мне решить эту проблему, чтобы она работала в будущих версиях панд, или, или есть лучший способ сделать это?