【问题标题】:Take maximum rainfall value for each season over a time period (xarray)获取一段时间内每个季节的最大降雨量值(xarray)
【发布时间】:2018-09-13 07:30:23
【问题描述】:

我正在尝试找出 10 年内每个季节 (DJF, MAM, JJA, SON) 的最大降雨量。我正在使用 netcdf 数据和 xarray 来尝试这样做。数据包括降雨量(每 3 小时记录一次)、纬度和经度数据。现在我有以下代码:

ds.groupby('time.season).max('time')

但是,当我这样做时,输出的形状为(4,145,192),表明它在整个时期内每个季节都取最大值。我想要每年每个季节的最大值。换句话说,输出应该具有类似(40,145,192) 的形状(每年 4 个值 x 10 年)

我已经考虑尝试使用DataSet.resample 以及使用time=3M 作为频率来执行此操作,但是它并没有正确地划分月份。如果必须,我可以更改数据集,因此它从正确的位置开始,但我希望有一种更简单的方法,因为已经有一个函数可以对其进行正确分组。

谢谢,如果您需要更多详细信息,请告诉我!

【问题讨论】:

  • 为年份添加一列并执行ds.groupby(by=['time.season', 'year']).max()
  • 谢谢!我会尝试这样做。 (使用 xarray 和 pandas 的新手,所以仍在学习如何做超出基础的任何事情)

标签: python group-by dataset netcdf4 xarray


【解决方案1】:

重采样将是这项工作最简单的工具。您已经接近时间频率,但您可能希望使用带有偏移量的季度频率:

ds.resample(time='QS-Mar').max('time')

可以按照 Pandas 文档中的说明进一步配置这些偏移量:http://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases

【讨论】:

  • 所以如果我理解正确的话,通过添加QS-Mar,它会将每个季度向后移动一个月,从第一季度开始(1 月至 3 月变为 12 月至 2 月)?
  • 对。我的意思是,您可以将开始月份设置为任何您喜欢的时间。我选择Mar,但您也可以使用Dec 并获得相同的效果。
猜你喜欢
  • 1970-01-01
  • 2015-01-12
  • 2021-06-29
  • 1970-01-01
  • 2016-01-14
  • 2013-12-30
  • 2021-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多