Ho un nome di dizionario date_dict composto da date datetime con valori corrispondenti ai conteggi interi delle osservazioni. Lo converto in una serie sparsa/dataframe con osservazioni censurate che vorrei unire o convertire in una serie/dataframe con date continue. La spiacevole comprensione delle liste è il mio trucco per aggirare il fatto che i panda apparentemente non copieranno automaticamente gli oggetti datetime con un indice DateTime appropriato.Riempimento del frameframe panda continuo dal dataframe sparse
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)
Questo esempio ha 1258 osservazioni e l'indice DateTime viene eseguito dal 2003-06-24 al 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
posso creare un dataframe vuoto con un indice DateTime continua, ma questo introduce una colonna non necessari e sembra goffa. Mi sento come se mi mancasse una soluzione più elegante che coinvolge un join.
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
C'è un modo più semplice o più elegante per riempire una dataframe continuo da una dataframe sparsa in modo che ci sia (1) un indice continuo, (2) la NaNs sono 0s, e (3) non c'è colonna vuota rimasta nel dataframe?
Name
2003-06-24 2
2003-06-25 0
2003-06-26 0
2003-06-27 0
2003-06-30 0
Grazie! Ho usato ts.reindex (pd.date_range (min (date_index), max (date_index)), fill_value = 0) –