繁体   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