2016-06-14 14 views
7

Ho un dataframe con i dati della seconda serie di frumento in df.Rimuovi righe di giorni non lavorativi da dataframe panda

df = wt["WHEAT_USD"] 

2016-05-02 02:00:00+02:00 4.780 
2016-05-02 02:01:00+02:00 4.777 
2016-05-02 02:02:00+02:00 4.780 
2016-05-02 02:03:00+02:00 4.780 
2016-05-02 02:04:00+02:00 4.780 
Name: closeAsk, dtype: float64 

Quando grafico i dati ha le fastidiose linee orizzontali a causa dei fine settimana. C'è un modo semplice per rimuovere semplicemente i giorni non lavorativi dal dataframe stesso.

Qualcosa di simile

df = df.BDays() 

risposta

14

Una soluzione semplice è quella di tagliare i giorni, che non Lunedi a Venerdì:

In [11]: s[s.index.dayofweek < 5] 
Out[11]: 
2016-05-02 00:00:00 4.780 
2016-05-02 00:01:00 4.777 
2016-05-02 00:02:00 4.780 
2016-05-02 00:03:00 4.780 
2016-05-02 00:04:00 4.780 
Name: closeAsk, dtype: float64 

Nota: questo non tiene conto nei giorni festivi ecc

+0

Grazie per l'aiuto! – vandelay

3

Panda BDay appena finisce usando .dayofweek<5 come la risposta scelta, ma può essere esteso t o account per festività, ecc.

import pandas as pd 
from pandas.tseries.offsets import BDay 

isBusinessDay = BDay().onOffset 
csv_path = 'C:\\Python27\\Lib\\site-packages\\bokeh\\sampledata\\daylight_warsaw_2013.csv' 
dates_df = pd.read_csv(csv_path) 
match_series = pd.to_datetime(dates_df['Date']).map(isBusinessDay) 
dates_df[match_series]