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。。。?为什么是索引?