2016-01-19 26 views
0

我有像兩列和大量行的熊貓系列:如何從Pandas系列中刪除節假日?

r = 
    1-10-2010 3.4 
    1-11-2010 4.5 
    1-12-2010 3.7 
    ...   ... 

我想要做的是去除一週的日子無法在自一週。所以要刪除星期五和星期六,做這樣的事情:

r = amazingfunction(r, ('Sun', 'Mon', 'Tue', 'Wed', Thu')) 
r = 
    1-10-2010 3.4 
    1-11-2010 4.5 
    1-12-2010 3.7 
    1-13-2010 3.4 
    1-14-2010 4.1 
    1-17-2010 4.5 
    1-18-2010 3.7 
    ...   ... 

我該怎麼做呢?

回答

1

您可以使用dt.dayofweekisin過濾DF,這裏週五和週六分別爲4,5,我們否定使用~布爾面膜:

In [12]: 
df = pd.DataFrame({'dates':pd.date_range(dt.datetime(2015,1,1), dt.datetime(2015,2,1))}) 
df['dayofweek'] = df['dates'].dt.dayofweek 
df 

Out[12]: 
     dates dayofweek 
0 2015-01-01   3 
1 2015-01-02   4 
2 2015-01-03   5 
3 2015-01-04   6 
4 2015-01-05   0 
5 2015-01-06   1 
6 2015-01-07   2 
7 2015-01-08   3 
8 2015-01-09   4 
9 2015-01-10   5 
10 2015-01-11   6 
11 2015-01-12   0 
12 2015-01-13   1 
13 2015-01-14   2 
14 2015-01-15   3 
15 2015-01-16   4 
16 2015-01-17   5 
17 2015-01-18   6 
18 2015-01-19   0 
19 2015-01-20   1 
20 2015-01-21   2 
21 2015-01-22   3 
22 2015-01-23   4 
23 2015-01-24   5 
24 2015-01-25   6 
25 2015-01-26   0 
26 2015-01-27   1 
27 2015-01-28   2 
28 2015-01-29   3 
29 2015-01-30   4 
30 2015-01-31   5 
31 2015-02-01   6 

In [13]: 
df[~df['dates'].dt.dayofweek.isin([4,5])] 

Out[13]: 
     dates dayofweek 
0 2015-01-01   3 
3 2015-01-04   6 
4 2015-01-05   0 
5 2015-01-06   1 
6 2015-01-07   2 
7 2015-01-08   3 
10 2015-01-11   6 
11 2015-01-12   0 
12 2015-01-13   1 
13 2015-01-14   2 
14 2015-01-15   3 
17 2015-01-18   6 
18 2015-01-19   0 
19 2015-01-20   1 
20 2015-01-21   2 
21 2015-01-22   3 
24 2015-01-25   6 
25 2015-01-26   0 
26 2015-01-27   1 
27 2015-01-28   2 
28 2015-01-29   3 
31 2015-02-01   6 

編輯

當你的數據是Series您的日期是您的索引,因此以下應該工作:

r[~r.index.dayofweek.isin([4,5])] 
+0

謝謝!有沒有辦法做到這一點,而不使用數據幀,只有一系列? –

+0

不明白它仍然有效,例如在你的問題中,你陳述了一個有2列的系列,這是不可能的,一個系列只是一個列,你的日期是你的索引嗎? – EdChum

+0

當我運行'print type(r)'時,我得到',所以我認爲它是一個系列。我錯了嗎? –