#python #pandas
#python #pandas
Вопрос:
У нас есть датчик, который записывает ‘x’, когда сообщает другой датчик. Это означает, что наблюдение выполняется в случайное время и со случайной частотой в течение часа. Вот как выглядят данные
> df
date time x
1/1/2018 00:24:12 10
1/1/2018 00:47:17 14
1/1/2018 1:17:11 12
1/1/2018 1:34:34 17
1/1/2018 1:52:23 15
1/1/2018 2:10:59 12
и так далее до 31/1/2018. Чтобы сравнить его с другим набором данных, я хочу найти значение, записанное в момент, ближайший к часовой отметке. Пример:
date time x
1/1/2018 00 10
1/1/2018 01 14 (Since 00:47:17 is -13 minutes to 01 as compared to 1:17:11 which is 17 minutes)
1/1/2018 02 15
Ответ №1:
DatetimeIndex
Сначала создайте, затем date_range
с Timestamp.floor
помощью и в последнюю DataFrame.reindex
очередь с помощью method='nearest'
:
df.index = pd.to_datetime(df['date'] ' ' df['time'])
rng = pd.date_range(df.index.min().floor('H'), df.index.max().floor('H'), freq='H')
df = df.reindex(rng, method='nearest')
print (df)
date time x
2018-01-01 00:00:00 1/1/2018 00:24:12 10
2018-01-01 01:00:00 1/1/2018 00:47:17 14
2018-01-01 02:00:00 1/1/2018 1:52:23 15
Последнее, если необходимо, удалите DatetimeIndex
:
df = df.reindex(rng, method='nearest').reset_index(drop=True)
print (df)
date time x
0 1/1/2018 00:24:12 10
1 1/1/2018 00:47:17 14
2 1/1/2018 1:52:23 15