【发布时间】:2012-12-06 09:36:35
【问题描述】:
我想过滤掉周末数据,只查看工作日的数据 (mon(0)-fri(4))。我是 pandas 的新手,在 pandas 中完成此任务的最佳方法是什么?
import datetime
from pandas import *
data = read_csv("data.csv")
data.my_dt
Out[52]:
0 2012-10-01 02:00:39
1 2012-10-01 02:00:38
2 2012-10-01 02:01:05
3 2012-10-01 02:01:07
4 2012-10-01 02:02:03
5 2012-10-01 02:02:09
6 2012-10-01 02:02:03
7 2012-10-01 02:02:35
8 2012-10-01 02:02:33
9 2012-10-01 02:03:01
10 2012-10-01 02:08:53
11 2012-10-01 02:09:04
12 2012-10-01 02:09:09
13 2012-10-01 02:10:20
14 2012-10-01 02:10:45
...
我想做这样的事情:
weekdays_only = data[data.my_dt.weekday() < 5]
AttributeError: 'numpy.int64' 对象没有属性 'weekday'
但这不起作用,我还没有完全掌握如何访问列日期时间对象。
最终目标是按工作日的时间范围分层排列,例如:
monday, 0-6, 7-12, 13-18, 19-23
tuesday, 0-6, 7-12, 13-18, 19-23
【问题讨论】:
-
不确定您的用例,但通常您会使用
my_dt作为索引,通过将parse_dates=True和index_col=<my_dt col>作为关键字参数传递给read_csv和read_csv将返回一个@ 987654329@。然后你可以简单地做weekdays = data[data.index.weekday < 5]