2014-11-30 9 views
5

Sto provando a suddividere un DataFrame alla condizione che è l'ultimo del mese. Ho usato:Come posso selezionare "ultimo giorno lavorativo del mese" in Panda?

df['Month_End'] = df.index.is_month_end 
sample = df[df['Month_End'] == 1] 

Questo funziona, ma sto lavorando con i dati del mercato azionario, quindi mi manca tutti i casi in cui la fine effettiva del mese è durante il fine settimana, ho bisogno di un modo per selezionare il "ultimo giorno lavorativo del mese".

risposta

5

È possibile generare un time series con l'ultimo giorno lavorativo di ogni mese passando freq='BM'.

Ad esempio, per creare una serie di ultimi giorni del 2014:

>>> pd.date_range('1/1/2014', periods=12, freq='BM') 
[2014-01-31 00:00:00, ..., 2014-12-31 00:00:00] 
Length: 12, Freq: BM, Timezone: None 

È quindi possibile utilizzare questo timeseries al sottoinsieme/reindex tuo dataframe.

+0

Questa soluzione lavori. L'unico problema è che in alcune serie l'ultimo giorno lavorativo del mese potrebbe essere una "vacanza personalizzata", quindi è necessario includerla nell'equazione. – hernanavella