У меня есть имя словаря date_dict, связанное с датами datetime со значениями, соответствующими целым числам наблюдений. Я конвертирую это в редкую серию /dataframe с цензурированными наблюдениями, которые я хотел бы объединить или преобразовать в серию /dataframe с непрерывными датами. Проворное понимание списка - это мой взлом, чтобы обойти тот факт, что pandas, по-видимому, автоматически не будет скрывать объекты даты и времени в соответствующем индексе DateTime.
df1 = pd.DataFrame(data=date_dict.values(),
index=[datetime.datetime.combine(i, datetime.time())
for i in date_dict.keys()],
columns=['Name'])
df1 = df1.sort(axis=0)
В этом примере имеется 1258 наблюдений, а индекс DateTime работает с 2003-06-24 по 2012-11-07.
df1.head()
Name
Date
2003-06-24 2
2003-08-13 1
2003-08-19 2
2003-08-22 1
2003-08-24 5
Я могу создать пустой фреймворк с непрерывным индексом DateTime, но это вводит ненужный столбец и кажется неуклюжим. Мне кажется, что мне не хватает более элегантного решения с участием.
df2 = pd.DataFrame(data=None,columns=['Empty'],
index=pd.DateRange(min(date_dict.keys()),
max(date_dict.keys())))
df3 = df1.join(df2,how='right')
df3.head()
Name Empty
2003-06-24 2 NaN
2003-06-25 NaN NaN
2003-06-26 NaN NaN
2003-06-27 NaN NaN
2003-06-30 NaN NaN
Существует ли более простой или более элегантный способ заполнения непрерывного фрейма данных из разреженного блока данных, так что существует (1) непрерывный индекс, (2) NaNs равны 0s и (3) нет остаточного пустого столбец в кадре данных?
Name
2003-06-24 2
2003-06-25 0
2003-06-26 0
2003-06-27 0
2003-06-30 0