【发布时间】:2015-11-16 05:19:04
【问题描述】:
我有一列(来自我的原始数据),我已将它从字符串转换为 Pandas 中的日期时间对象。
该列如下所示:
0 2012-01-15 11:10:12
1 2012-01-15 11:15:01
2 2012-01-16 11:15:12
3 2012-01-16 11:25:01
...
4 2012-01-22 11:25:11
5 2012-01-22 11:40:01
6 2012-01-22 11:40:18
7 2012-01-23 11:40:23
8 2012-01-23 11:40:23
...
9 2012-01-30 11:50:02
10 2012-01-30 11:50:41
11 2012-01-30 12:00:01
12 2012-01-30 12:00:34
13 2012-01-30 12:45:01
...
14 2012-02-05 12:45:13
15 2012-01-05 12:55:01
15 2012-01-05 12:55:01
16 2012-02-05 12:56:11
17 2012-02-05 13:10:01
...
18 2012-02-11 13:10:11
...
19 2012-02-20 13:25:02
20 2012-02-20 13:26:14
21 2012-02-20 13:30:01
...
22 2012-02-25 13:30:08
23 2012-02-25 13:30:08
24 2012-02-25 13:30:08
25 2012-02-26 13:30:08
26 2012-02-27 13:30:08
27 2012-02-27 13:30:08
28 2012-02-27 13:30:25
29 2012-02-27 13:30:25
我想做的是计算每个日期发生的频率。如您所见,我遗漏了一些日期,但如果我要手动计算频率(对于可见值),我会:
2012-01-15 - 2(频率)
2012-01-16 - 2
2012-01-22 - 3
2012-01-23 - 2
2012-01-30 - 5
2012-02-05 - 5
2012-02-11 - 1
2012-02-20 - 3
2012-02-25 - 3
2012-02-26 - 1
2012-02-27 - 4
这是每天的频率,我想数一数。到目前为止,我已经尝试过:
df[df.str.contains(r'^\d\d\d\d-\d\d-\d\d')].value_counts()
我知道它失败了,因为这些不是“字符串”对象,但我不确定如何计算。
我也查看了 .dt 属性,但 Pandas 文档对这些简单的频率计算非常冗长。
另外,为了概括这一点,我将如何:
- 将每日频率应用于每周频率(例如周一至周日)
- 将每日频率应用于每月频率(例如,我在列中看到“2012-01-**”的次数)
- 在其他列中使用每日/每周/每月限制(例如,如果我有一个包含“GET 请求”的列,我想知道每天发生多少,然后是每周,然后是每月)
- 应用每周限制和另一个限制(例如,我有一个返回“404 Not found”的列,我想查看我每周收到多少“404 Not found”)
也许解决方案很长,我可能需要做很多事情:拆分-应用-组合...但我相信 Pandas 简化/抽象了很多工作,这就是为什么我现在卡住了。
这个文件的来源可以被认为是一个服务器日志文件。
【问题讨论】:
标签: python python-2.7 pandas