Неправильный переиндекс при заполнении недостающего промежутка в дате

#python #pandas #date #missing-data #reindex

#python #pandas #Дата #отсутствуют данные #переиндексация

Вопрос:

У меня есть группа данных, в которой я хотел бы заполнить определенный диапазон пропущенных дат, и даты представлены в формате period [D] (который, как я полагаю, является типом period).

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

 Date           value
2020-05-01      8.2
2020-07-15      8.3
2020-07-23      8.4
  

Моя цель — заполнить пробел в дате между 15.07.2020 и 18.07.2020, а заполненные «значения» должны быть «na» или «NAN». Я пробовал использовать переиндексацию.

Сначала я преобразовал PeriodIndex набора данных во временную метку, используя

 df.index = pd.PeriodIndex.to_timestamp(df.index)
  

и я сделал следующее:

 idx = pd.date_range('2020-07-16', '2013-07-22')
df = df['value']
df1 = df.reindex(idx, fill_value=0)
df1
  

Но переиндексация показывает мне следующий результат:

 Date           value
2020-07-16      0
2020-07-17      0
2020-07-18      0
2020-07-19      0
2020-07-20      0
2020-07-21      0
  

Но мой желаемый результат:

 Date           value
2020-05-01      8.2
2020-07-15      8.3
2020-07-16      0
2020-07-17      0
2020-07-18      0
2020-07-19      0
2020-07-20      0
2020-07-21      0
2020-07-23      8.4
  

У кого-нибудь есть идеи о том, где что-то пошло не так?

Ответ №1:

Вместо переиндексации попробуйте объединить

 df = pd.concat([df, pd.DataFrame(0, index=pd.date_range('2020-07-16', '2013-07-22'))]
    ).sort_index()