Панды .resample или .asfreq для заполнения пропущенных записей даты и времени - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть фрейм данных, который выглядит следующим образом:

import pandas as pd
d = {'TransactionId' : pd.Series([633025, 634560],index = ['2018-01-07 22:30:00', '2018-01-08 19:00:00']),
 'Value' : pd.Series([677.06, 677.44], index = ['2018-01-07 22:30:00', '2018-01-08 19:00:00'])}
df = pd.DataFrame(d)
df.head()

После завершения TransactionId 633025 записи прекращаются до тех пор, пока не начнется следующая транзакция. Я хотел бы добавлять значение индекса datetime каждые 15 минут между двумя вхождениями, с TransactionId равным 'NaN', и вперед, заполняя столбец Value. Я попытался использовать .resample и .asfreq без какой-либо удачи; использование любого с периодом '15 минут' не изменяет фрейм данных соответственно. Как я могу это сделать?

1 Ответ

0 голосов
/ 17 сентября 2018

Сначала сделайте ваш индекс datetime, а затем вы можете просто использовать .resample, а затем .ffill

import pandas as pd

df.index = pd.to_datetime(df.index)
df = df.resample('15min').asfreq()
df['Value'] = df['Value'].ffill()

Выход:

                     TransactionId   Value
2018-01-07 22:30:00       633025.0  677.06
2018-01-07 22:45:00            NaN  677.06
2018-01-07 23:00:00            NaN  677.06
2018-01-07 23:15:00            NaN  677.06
2018-01-07 23:30:00            NaN  677.06 
...
2018-01-08 18:00:00            NaN  677.06
2018-01-08 18:15:00            NaN  677.06
2018-01-08 18:30:00            NaN  677.06
2018-01-08 18:45:00            NaN  677.06
2018-01-08 19:00:00       634560.0  677.44
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...