我想过滤周末数据,只查看工作日的数据(周一(0)-fri(4)).我是熊猫的新手,在熊猫中实现这一目标的最佳方法是什么?
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
...
Run Code Online (Sandbox Code Playgroud)
我想做点什么:
weekdays_only = data[data.my_dt.weekday() < 5]
Run Code Online (Sandbox Code Playgroud)
AttributeError:'numpy.int64'对象没有属性'weekday'
但这不起作用,我还没有完全掌握如何访问列日期时间对象.
最终的目标是按层次安排工作日小时范围,例如:
monday, 0-6, 7-12, 13-18, 19-23
tuesday, 0-6, 7-12, 13-18, 19-23
Run Code Online (Sandbox Code Playgroud)
小智 27
你对函数"weekday"的调用不起作用,因为它在data.my_dt的索引上运行,这是一个int64数组(这是错误消息的来源)
您可以使用以下内容在包含工作日的数据中创建新列:
data['weekday'] = data['my_dt'].apply(lambda x: x.weekday())
Run Code Online (Sandbox Code Playgroud)
然后你可以用工作日过滤:
weekdays_only = data[data['weekday'] < 5 ]
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助
Kar*_*tik 10
更快的方式是使用DatetimeIndex.weekday,如下:
temp = pd.DatetimeIndex(data['my_dt'])
data['weekday'] = temp.weekday
Run Code Online (Sandbox Code Playgroud)
速度要快得多,特别是对于大量的行.有关详细信息,请查看此答案.
| 归档时间: |
|
| 查看次数: |
16674 次 |
| 最近记录: |