从pandas数据框中删除非工作日行

van*_*lay 18 python pandas

我有一个数据框,其中包含小麦的第二个时间序列数据df.

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
Run Code Online (Sandbox Code Playgroud)

当我绘制数据时,由于周末,它有令人烦恼的水平线.有没有简单的方法可以简单地从数据框本身中删除非工作日.

就像是

df = df.BDays()
Run Code Online (Sandbox Code Playgroud)

And*_*den 28

一个简单的解决方案就是在周一到周五的时间内完成:

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
Run Code Online (Sandbox Code Playgroud)

注意:这不考虑银行假期等.


Dav*_*itt 5

熊猫BDay最终只会.dayofweek<5像选择的答案那样使用,但可以扩展为解决银行假期等问题。

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]
Run Code Online (Sandbox Code Playgroud)