как заполнить недостающую строку времени данных пандами - PullRequest
0 голосов
/ 07 мая 2019
index                         valuve
2017-01-25 01:00:00:00          1
2017-01-25 02:00:00:00          5
2017-01-25 03:00:00:00          7
2017-01-25 07:00:00:00          34
2017-01-25 20:00:00:00          45
2017-01-25 24:00:00:00          45
2017-01-26 1:00:00:00           31

Этот фрейм данных является 24-часовой записью каждого дня, но он пропускает некоторые записи. Как я могу вставить недостающую строку в нужное место и заполнить 'nan' до соответствующего значения?

1 Ответ

1 голос
/ 07 мая 2019

Здесь сложное 24H во времени, поэтому необходимо replace до 23H и добавить один час.Последнее использование DataFrame.asfreq для добавления пропущенных значений для 24H DatetimeIndex:

mask = df.index.str.contains(' 24:')
idx = df.index.where(~mask, df.index.str.replace(' 24:', ' 23:'))
idx = pd.to_datetime(idx, format='%Y-%m-%d %H:%M:%S:%f')
df.index = idx.where(~mask, idx + pd.Timedelta(1, unit='H'))
df = df.asfreq('H')
print (df)
                     valuve
index                      
2017-01-25 01:00:00     1.0
2017-01-25 02:00:00     5.0
2017-01-25 03:00:00     7.0
2017-01-25 04:00:00     NaN
2017-01-25 05:00:00     NaN
2017-01-25 06:00:00     NaN
2017-01-25 07:00:00    34.0
2017-01-25 08:00:00     NaN
2017-01-25 09:00:00     NaN
2017-01-25 10:00:00     NaN
2017-01-25 11:00:00     NaN
2017-01-25 12:00:00     NaN
2017-01-25 13:00:00     NaN
2017-01-25 14:00:00     NaN
2017-01-25 15:00:00     NaN
2017-01-25 16:00:00     NaN
2017-01-25 17:00:00     NaN
2017-01-25 18:00:00     NaN
2017-01-25 19:00:00     NaN
2017-01-25 20:00:00    45.0
2017-01-25 21:00:00     NaN
2017-01-25 22:00:00     NaN
2017-01-25 23:00:00     NaN
2017-01-26 00:00:00    45.0
2017-01-26 01:00:00    31.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...