Pandas Reindex заполнить пропущенные даты - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть датафрейм с индексом дат.Каждые данные являются первыми месяца.Я хочу заполнить все недостающие даты в индексе на дневном уровне.

Я думал, что это должно работать:

daily=pd.date_range('2016-01-01', '2018-01-01', freq='D')
df=df.reindex(daily)

Но он возвращает NA в строках, которые должны иметь данные в(1 числа месяца) Кто-нибудь может увидеть проблему?

1 Ответ

0 голосов
/ 23 ноября 2018

Используйте reindex с параметром method='ffill' или resample с ffill для более общего решения, поскольку нет необходимости создавать новый индекс с помощью date_range:

df = pd.DataFrame({'a': range(13)},
                   index=pd.date_range('2016-01-01', '2017-01-01', freq='MS'))

print (df)
             a
2016-01-01   0
2016-02-01   1
2016-03-01   2
2016-04-01   3
2016-05-01   4
2016-06-01   5
2016-07-01   6
2016-08-01   7
2016-09-01   8
2016-10-01   9
2016-11-01  10
2016-12-01  11
2017-01-01  12

daily=pd.date_range('2016-01-01', '2018-01-01', freq='D')
df1 = df.reindex(daily, method='ffill')

Другое решение:

df1 = df.resample('D').ffill()  

print (df1.head())
            a
2016-01-01  0
2016-01-02  0
2016-01-03  0
2016-01-04  0
2016-01-05  0
...