Quando si reindicalizza, ad esempio, dati di 1 minuto ai dati giornalieri (ad es. Indice per i prezzi giornalieri alle 16:00), se c'è una situazione in cui non ci sono dati di 1 minuto per il timestamp di 16:00 in un giorno, si desidera inoltrare il riempimento dagli ultimi dati 1 min non null. Nel seguente caso, non ci sono dati 1min prima delle 16:00 del 13 e gli ultimi dati 1min provengono dal decimo.Qual è la funzionalità del metodo di riempimento durante la reindicizzazione?
Quando si utilizza reindex con method = 'ffill', non ci si aspetterebbe che il seguente codice riempia il valore il 13 alle 16:00? Ispezionando daily1 mostra che manca comunque.
import pandas as pd
import numpy as np
hf_index = pd.date_range(start='2013-05-09 9:00', end='2013-05-13 23:59', freq='1min')
hf_prices = np.random.rand(len(hf_index))
hf = pd.DataFrame(hf_prices, index=hf_index)
hf.ix['2013-05-10 18:00':'2013-05-13 18:00',:]=np.nan
hf.plot()
ind_daily = pd.date_range(start='2013-05-09 16:00', end='2013-05-13 16:00', freq='B')
print(ind_daily.values)
daily1 = hf.reindex(index=ind_daily, method='ffill')
Per riempire come uno (o meglio) aspetterei, ho bisogno di fare questo:
daily2 = daily1.fillna(method='ffill')
Se questo è il caso, qual è il metodo di riempimento in reindicizzare realtà facendo. Non mi è chiaro solo dalla documentazione dei panda. Mi sembra che non dovrei fare la linea sopra.
Hmm. Sono d'accordo che questo è un comportamento inaspettato e potrebbe essere un bug. Per inciso, questo può aiutarti nel frattempo, con dati indicizzati a data/ora, [resample] (http: //pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.resample.html) è in genere una scelta migliore rispetto a reindex. Vedi in particolare gli argomenti delle parole chiave '' label'' e '' close'' che potrebbero essere correlati al tuo problema. –
@ user915 altrimenti, come è possibile reindicizzare il dataframe su un'altra frequenza mentre si stanno ancora trattando i valori mancanti come valore mancante? –
@runnerup utilizzando il metodo = Nessuno? – user915