Python 如何从熊猫系列中删除假期?

Python 如何从熊猫系列中删除假期?,python,pandas,Python,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

我有一个熊猫系列,有两列和许多行,如:

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
    ...         ...
我该怎么做呢?

您可以使用和来过滤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
编辑

由于您的数据是一个
系列
您的日期是您的索引,因此以下内容应该有效:

r[~r.index.dayofweek.isin([4,5])]
您可以使用和来过滤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
编辑

由于您的数据是一个
系列
您的日期是您的索引,因此以下内容应该有效:

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

谢谢有没有办法不使用数据框而只使用一个系列来实现这一点?我不明白它仍然有效,例如,在你的问题中,你说一个系列有两列,这是不可能的,一个系列只有一列,你的日期是你的索引吗?当我运行
print type(r)
时,我得到
,所以我假设它是一个系列。我错了吗?是的,但这意味着日期是你的索引:
r[~r.index.dayofweek.isin([4,5])]
应该有效,我的系列还有其他错误。为什么要使用r.index.dayofweek。。。?为什么要索引?谢谢!有没有办法不使用数据框而只使用一个系列来实现这一点?我不明白它仍然有效,例如,在你的问题中,你说一个系列有两列,这是不可能的,一个系列只有一列,你的日期是你的索引吗?当我运行
print type(r)
时,我得到
,所以我假设它是一个系列。我错了吗?是的,但这意味着日期是你的索引:
r[~r.index.dayofweek.isin([4,5])]
应该有效,我的系列还有其他错误。为什么要使用r.index.dayofweek。。。?为什么是索引?