[英]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.