繁体   English   中英

如何正确获取熊猫时间序列中子集的总和?

[英]How can I correctly take the sum of a subset in a Pandas time series?

我有这个时间序列( raw_series ):

2016-03-30 00:01:00    2
2016-03-30 04:54:00    4
2016-03-30 08:51:00    1
2016-03-30 08:54:00    0
2016-03-30 08:55:00    1
2016-03-30 08:56:00    1
2016-03-30 08:57:00    2
2016-03-30 08:58:00    0
2016-03-30 09:00:00    1
2016-03-30 09:01:00    0
2016-03-30 09:04:00    0
2016-03-30 09:05:00    7
2016-03-30 09:06:00    4
2016-03-30 09:22:00    0
2016-03-30 09:24:00    8
2016-03-30 09:25:00    3
2016-03-30 09:28:00    0
2016-03-30 09:29:00    0
2016-03-30 09:39:00    1
2016-03-30 09:40:00    1
2016-03-30 09:41:00    1

我想计算09:00和08:00的值总和。 这就是我所做的(但不会起作用)

now = datetime.now()
try:
    this_hour = raw_series[datetime(now.year, now.month, now.day, now.hour)].sum()
except KeyError:
    this_hour = 0

prev = now - timedelta(hours=1)
try:
    prev_hour = raw_series[datetime(prev.year, prev.month, prev.day, prev.hour)].sum()
except KeyError:
    prev_hour = 0

now运行程序的时间是(从调试输出文件中复制):

[30/Mar/2016 09:59:45] DEBUG [main.views:267] now is 2016-03-30 09:59:41.318779

结果为: this_hour = 1.0prev_hour = 0 (异常)

我究竟做错了什么?

IIUC您可以使用pd.to_datetime将索引转换为datetime.index ,然后使用mask数小时:

s = pd.Series([2, 4, 1, 0, 1, 1, 2, 0, 1, 0, 0, 7, 4, 0, 8, 3, 0, 0, 1, 1, 1], index=['2016-03-30 00:01:00', '2016-03-30 04:54:00', '2016-03-30 08:51:00', '2016-03-30 08:54:00', '2016-03-30 08:55:00', '2016-03-30 08:56:00', '2016-03-30 08:57:00', '2016-03-30 08:58:00', '2016-03-30 09:00:00', '2016-03-30 09:01:00', '2016-03-30 09:04:00', '2016-03-30 09:05:00', '2016-03-30 09:06:00', '2016-03-30 09:22:00', '2016-03-30 09:24:00', '2016-03-30 09:25:00', '2016-03-30 09:28:00', '2016-03-30 09:29:00', '2016-03-30 09:39:00', '2016-03-30 09:40:00', '2016-03-30 09:41:00'])

s.index = pd.to_datetime(s.index)
cur_hour = 9
prev_hour = cur_hour - 1
res1 = s[s.index.hour == cur_hour].sum()
res2 = s[s.index.hour == prev_hour].sum()

In [57]: res1
Out[57]: 26

In [58]: res2
Out[58]: 5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM