Mam nazwę słownika date_dict, wpisaną przez daty datetime z wartościami odpowiadającymi liczbie całkowitych obserwacji. Konwertuję to na rzadką serię/ramkę danych z ocenzurowanymi obserwacjami, które chciałbym dołączyć lub przekonwertować na serię/ramkę danych z ciągłymi datami. Złe zrozumienie list jest moim hackem, aby obejść fakt, że pandy najwyraźniej nie będą automatycznie ukrywać datetime obiektów do odpowiedniego indeksu DateTime.Wypełnianie ramki danych pandy ciągłej z rozproszonej ramki danych
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)
Ten przykład zawiera 1258 obserwacji, a indeks DateTime obejmuje okres od 2003-06-24 do 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
można utworzyć puste dataframe z ciągłą wskaźnika DateTime, ale wprowadza to kolumny niepotrzebne i wydaje niezgrabne. Mam wrażenie, że brakuje mi bardziej eleganckiego rozwiązania, które wiąże się z dołączeniem.
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
istnieje prostszy i bardziej elegancki sposób, aby wypełnić ciągły dataframe z rzadkim dataframe tak, że nie jest (1) Ciągła indeks (2) nieliczby są 0s, (3), nie ma to pozostawiona pusta kolumna w ramce danych?
Name
2003-06-24 2
2003-06-25 0
2003-06-26 0
2003-06-27 0
2003-06-30 0
Dzięki! Użyłem ts.reindex (pd.date_range (min (date_index), max (date_index)), fill_value = 0) –