Я не могу найти это нигде, так что извините, если это дубликат. У меня есть несколько больших наборов данных, которые имеют нерегулярные временные ряды. Я хотел бы добавить их к не чаще , чем каждые x минут, сгруппированные по указанному c id, но сохранить первоначальную метку времени. Набор данных выглядит следующим образом:
df = pd.DataFrame({'id': [101,101,101,101,106,106,106],
'ti': [pd.Timestamp('2020-04-02T09:56:46'),
pd.Timestamp('2020-04-02T10:17:01'),
pd.Timestamp('2020-04-02T10:21:02'),
pd.Timestamp('2020-04-02T10:37:09'),
pd.Timestamp('2020-04-02T09:56:03'),
pd.Timestamp('2020-04-02T09:59:34'),
pd.Timestamp('2020-04-02T10:10:20')],
'lat': [-36.006335, -36.004282, -36.003927,
-36.002455,-36.211260,-36.213578,
-36.216875]})
В идеале, я хотел бы иметь что-то подобное каждые 15 минут, например:
dfs = df.set_index('ti').groupby('id').resample('15T').nearest()
id ti lat
101 2020-04-02 09:56:46 -36.006335
101 2020-04-02 10:17:01 -36.004282
101 2020-04-02 10:37:09 -36.002455
106 2020-04-02 09:56:03 -36.211260
106 2020-04-02 10:10:20 -36.216875
, но я действительно получаю следующее:
id lat
id ti
101 2020-04-02 09:45:00 101 -36.006335
2020-04-02 10:00:00 101 -36.006335
2020-04-02 10:15:00 101 -36.004282
2020-04-02 10:30:00 101 -36.002455
106 2020-04-02 09:45:00 106 -36.211260
2020-04-02 10:00:00 106 -36.213578
Если я использую '15m', это только сохранение первой отметки времени каждого идентификатора.
Я также представляю, что есть способ сгруппировать по идентификатору, получить минимальное / максимальное время, вычислить количество точек, которые могли бы существовать, если бы они были теоретически с ~ x минутными интервалами и основаны на выборке, основанной на этом.
Заранее благодарен за любую помощь.