簡體   English   中英

如何提取一分鍾時間序列 python 中的中間時間戳?

[英]How to extract the mid- timestamp in an minute timeseries python?

問題是當太陽在地平線以上時計算一天中每個小時的中點。

例如:當日出在上午 8.42 時,我需要上午 8.42 到上午 9:00 之間的中間時間戳,然后再需要上午 9:00 到上午 10:00 之間的中間時間戳,依此類推。

當太陽高於地平線時,我使用 pvlib 生成了時間序列,這是 2019 年 1 月 1 日第一個小時的時間序列。 時間序列存儲在數據框中。

時間序列:

2019-01-01 08:42:00+01:00

2019-01-01 08:43:00+01:00

2019-01-01 08:44:00+01:00

2019-01-01 08:45:00+01:00

2019-01-01 08:46:00+01:00

2019-01-01 08:47:00+01:00

2019-01-01 08:48:00+01:00

2019-01-01 08:49:00+01:00

2019-01-01 08:50:00+01:00

2019-01-01 08:51:00+01:00

2019-01-01 08:52:00+01:00

2019-01-01 08:53:00+01:00

2019-01-01 08:54:00+01:00

2019-01-01 08:55:00+01:00

2019-01-01 08:56:00+01:00

2019-01-01 08:57:00+01:00

2019-01-01 08:58:00+01:00

2019-01-01 08:59:00+01:00

2019-01-01 09:00:00+01:00

我需要在這個分鍾的時間序列中獲得中間的一個,這意味着我需要獲得其中任何一個。

2019-01-01 08:50:00+01:00

2019-01-01 08:51:00+01:00

一個非常有趣的問題,我在處理太陽輻射時間序列時也遇到過幾次。 首先,如果你提供一個小例子,它總是更容易,例如:

import pandas as pd
import numpy as np
date_range = pd.date_range('2019-01-01 08:42',periods=200, freq='1min')
df = pd.DataFrame(index=date_range, data={'data':np.arange(len(date_range))})

一種解決方案是使用每個時間步的分鍾定義一列,然后進行平均重采樣並將平均分鍾作為 timedelta 添加到索引中:

df['minute'] = df.index.minute
dfr = df.resample('1h').mean()
dfr['middle_time'] = dfr.index + pd.to_timedelta(dfr['minute']+0.5, unit='min')
print(dfr.head())

這導致:

                     data    minute     middle_time
2019-01-01 08:00:00    8.5    50.5      2019-01-01 08:51:00
2019-01-01 09:00:00   47.5    29.5      2019-01-01 09:30:00
2019-01-01 10:00:00  107.5    29.5      2019-01-01 10:30:00
2019-01-01 11:00:00  167.5    29.5      2019-01-01 11:30:00
2019-01-01 12:00:00  198.5     0.5      2019-01-01 12:01:00

當然,您也可以將分鍾偏移量添加到索引本身,具體取決於您是否將索引或日期時間列傳遞給 PVLib。

你可以嘗試這樣的事情:

df['Time'] = pd.to_datetime(df['Time'])
df['Time'] = df['Time'].sort_values()
print(df.loc[int(len(df['Time'])/2)]['Time'])

2019-01-01 08:51:00+01:00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM