#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()