我有一個資料集,它在四年內每分鐘標記一次事件的發生。這是一個示例:
In [547]: result
Out[547]:
uuid timestamp col1 col2 col3
0 100 2016-03-30 00:00:00 02:00 NaN NaN NaN
1 100 2016-03-30 00:01:00 02:00 NaN NaN NaN
2 100 2016-03-30 00:02:00 02:00 NaN NaN NaN
3 100 2016-03-30 00:03:00 02:00 1.49 1.79 0.979
4 100 2016-03-30 00:04:00 02:00 NaN NaN NaN
... ... ... .. ...
1435 100 2016-03-30 23:55:00 02:00 NaN NaN NaN
1436 100 2016-03-30 23:56:00 02:00 1.39 2.19 1.09
1437 100 2016-03-30 23:57:00 02:00 NaN NaN NaN
1438 100 2016-03-30 23:58:00 02:00 NaN NaN NaN
1439 100 2016-03-30 23:59:00 02:00 NaN NaN NaN
[1440 rows x 5 columns]
每次有非空白行時,我都會嘗試獲取摘要統計資訊,并每六個小時獲取這些統計資訊。為此,該resample()功能非常有效。這是一個示例:
In [548]: result = result.set_index('timestamp').tz_convert('Europe/Berlin').resample('6h', label='right', closed='right', origin='start_day').agg(['mean', 'last', 'count']).iloc[:,-9:]
Out[548]:
col1_mean col1_last ... col3_last times_changed
timestamp ...
2016-03-30 00:00:00 02:00 NaN NaN ... NaN 0
2016-03-30 07:00:00 02:00 1.0690 1.069 ... 1.279 1
2016-03-30 13:00:00 02:00 1.0365 1.009 ... 1.239 4
2016-03-30 19:00:00 02:00 1.0150 0.989 ... 1.209 5
2016-03-30 01:00:00 02:00 1.1290 1.129 ... 1.329 1
[5 rows x 7 columns]
這看起來很棒,是我想要使用的格式。但是,當我對所有資料(跨越多年)運行我的代碼時,以下是輸出的摘錄:
In [549]: result
Out[549]:
col1_mean col1_last ... col3_last times_changed
timestamp ...
2016-03-27 00:00:00 01:00 NaN NaN ... NaN 0
2016-03-27 07:00:00 02:00 1.0690 1.069 ... 1.279 1
2016-03-27 13:00:00 02:00 1.0365 1.009 ... 1.239 4
2016-03-27 19:00:00 02:00 1.0150 0.989 ... 1.209 5
2016-03-28 01:00:00 02:00 1.1290 1.129 ... 1.329 1
[5 rows x 7 columns]
新索引將 DST 考慮在內,并將所有內容都推遲了一個小時。我希望新的時間仍然在 0-6、6-12 等之間。
有沒有辦法強制我的資料集遵守 0-6、6-12 格式?如果有一個額外的小時,也許從那個聚合仍然可以塞進 0-6 范圍?
我正在使用的時區是歐洲/柏林,我嘗試將所有內容都轉換為 UTC。但是,值不在正確的日期或時間——例如,00:15 發生的事件將是前一天的 23:15,這會拋出這些匯總統計資訊。
有沒有創造性的解決方案來解決這個問題?
uj5u.com熱心網友回復:
你試過這個嗎?我認為它應該可以作業(首先轉換為本地時區,然后通過 .tz_localize(None) 截斷時區資訊)
result = result.set_index('timestamp').tz_convert('Europe/Berlin').tz_localize(None).resample('6h', label='right', closed='right', origin='start_day').agg(['mean', 'last', 'count']).iloc[:,-9:]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/439079.html
