簡體   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