【问题标题】:How do I extract the 2 hour interval for a given time series in python?如何在 python 中提取给定时间序列的 2 小时间隔?
【发布时间】:2022-01-27 18:44:19
【问题描述】:

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

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()

但我需要以读取sliding scale上的数据的方式分析数据,例如:

  1. 下午 1 点到 3 点的数据
  2. 下午 2 点到 4 点的数据
  3. 下午 3 点到 5 点的数据 ......等

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

【问题讨论】:

  • 使用rolling 而不是resample

标签: python pandas time-series


【解决方案1】:

使用rolling 方法,它接受一个窗口

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

【讨论】:

    猜你喜欢
    • 2020-05-02
    • 2022-01-16
    • 1970-01-01
    • 2019-11-29
    • 2020-08-09
    • 2022-01-20
    • 2020-05-23
    • 2022-10-06
    • 2018-02-28
    相关资源
    最近更新 更多