gpt4 book ai didi

python - 如何在 python 中提取给定时间序列的 2 小时间隔?

转载 作者:行者123 更新时间:2023-12-05 04:38:48 29 4
gpt4 key购买 nike

我目前正在分析 NetCDF 文件中的一些降雨数据,在提取数据后,我生成了 1979-2020 年间 1 小时最大降雨量的时间序列:

import glob
import numpy as np
from netCDF4 import Dataset
import pandas as pd
import xarray as xr

all_years = []

for file in glob.glob('*.nc'):
#print(file)
data = Dataset(file, 'r')
time = data.variables['time']
year = time.units[11:16]
all_years.append(year)

year_start = '01-01-1979'
year_end = '31-12-2021'
date_range = pd.date_range(start = str(year_start),
end = str(year_end),
freq = 'H')

df = pd.DataFrame(0.0,columns = ['tp'], index = date_range)

lat_freetown = 8.4657
lon_freetown = 13.2317

all_years.sort()

for yr in range(1979,2021):
data = Dataset('era5_year' + str(yr)+ '.nc', 'r')

lat = data.variables['latitude'][:]
lon = data.variables['longitude'][:]

sq_diff_lat = (lat - lat_freetown)**2
sq_diff_lon = (lon - lon_freetown)**2

min_index_lat = sq_diff_lat.argmin()
min_index_lon = sq_diff_lon.argmin()

tp = data.variables['tp']

start = str(yr) + '-01-01'
end = str(yr) + '-12-31'
d_range = pd.date_range(start = start,
end = end,
freq = 'H')

for t_index in np.arange(0, len(d_range)):
print('Recording the value for: ' + str(d_range[t_index])+str(tp[t_index, min_index_lat, min_index_lon]))
df.loc[d_range[t_index]]['tp'] = tp[t_index, min_index_lat, min_index_lon]


daily = df.resample('D').max()`

现在,我需要在 2 小时内分析这个系列。我想我可以通过“2H”再次使用重采样功能:

df.resample('2H').max()

但我需要以这样的方式分析数据,即它在滑动刻度上读取数据,例如:

  1. Data from 1pm to 3pm
  2. Data from 2pm to 4pm
  3. Data from 3pm to 5pm...... etc

如果有人知道我可以以这种方式分析我的时间序列的方法,以 2 小时为间隔,但也分析其间的时间,那么任何帮助将不胜感激!

最佳答案

使用接收窗口的rolling方法

df.rolling('2H').max()

关于python - 如何在 python 中提取给定时间序列的 2 小时间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70518559/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com