Вставьте отсутствующие рабочие дни в кадре данных pandas и заполните их NaN

Я пытаюсь вставить отсутствующие рабочие дни в фреймворке временных рядов, таких как

import pandas as pd from pandas.tseries.offsets import * df = pd.DataFrame([['2016-09-30', 10, 2020], ['2016-10-03', 20, 2424], ['2016-10-05', 5, 232]], columns=['date', 'price', 'vol']).set_index('date') df['date'] = pd.to_datetime(df['date']) df = df.set_index('date') 

данные выглядят следующим образом:

 Out[300]: price vol date 2016-09-30 10 2020 2016-10-03 20 2424 2016-10-05 5 232 

Я могу легко создать серию недельных дней с помощью pd.date_range()

 pd.date_range('2016-09-30', '2016-10-05', freq=BDay()) Out[301]: DatetimeIndex(['2016-09-30', '2016-10-03', '2016-10-04', '2016-10-05'], dtype='datetime64[ns]', freq='B') 

основанный на том, что DateTimeIndex я хотел бы добавить отсутствующие даты в моем df и заполнить значения столбца с помощью NaN, поэтому я получаю:

 Out[300]: price vol date 2016-09-30 10 2020 2016-10-03 20 2424 2016-10-04 NaN NaN 2016-10-05 5 232 

Есть простой способ сделать это? Благодаря!

2 Solutions collect form web for “Вставьте отсутствующие рабочие дни в кадре данных pandas и заполните их NaN”

Вы можете использовать reindex:

 df.index = pd.to_datetime(df.index) df.reindex(pd.date_range('2016-09-30', '2016-10-05', freq=BDay())) Out: price vol 2016-09-30 10.0 2020.0 2016-10-03 20.0 2424.0 2016-10-04 NaN NaN 2016-10-05 5.0 232.0 

В качестве альтернативы вы можете использовать pandas.DataFrame.resample () , указав «B» для бизнес-дня, без необходимости указывать последовательность начала или конца даты, так же как и датафрейм поддерживает индекс datetime

 df = df.resample('B').sum() # price vol # date # 2016-09-30 10.0 2020.0 # 2016-10-03 20.0 2424.0 # 2016-10-04 NaN NaN # 2016-10-05 5.0 232.0 
  • Вход в командную строку в Python
  • Является ли Python 3.3 лучше, чем 2,7 для декодирования и повторного кодирования Скребковый веб-текст для UTF-8? Как, намного лучше?
  • Как интегрировать SimpleGUI с оболочкой Python 2.7 и 3.0
  • Есть ли способ передать необязательные параметры функции?
  • Как я должен понимать вывод dis.dis?
  • Python 2.7 Unicode Dict
  • Почему эти коды Python работают по-разному
  • как получить доступ к python из командной строки, используя py вместо python
  • Обработка ошибок в Python с помощью JSON и словаря
  • ValueError: неконвертированные данные остаются: 02:05
  • Проверьте, является ли объект числом или логическим
  • Python - лучший язык программирования в мире.