首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调用xarray的groupby函数按照年和月的组合对数据进行分组

如何调用xarray的groupby函数按照年和月的组合对数据进行分组
EN

Stack Overflow用户
提问于 2019-02-20 07:06:56
回答 2查看 2.5K关注 1票数 2

我有一个跨越几年的每日数据集的DataArray对象。它有一个变量和三个维度,分别名为latitudelongitudetime (每日)。时间坐标类似于time (time) datetime64[ns] 2016-01-01 2016-01-02 ... 2018-12-31

我想通过DataArray的groupby函数按年和月的组合对数据进行分组。但是下面的代码只给出了int64中的时间坐标,即1,2,3,...,12。

代码语言:javascript
复制
da_groupby_monthly = da.groupby('time.month').sum('time')
print(da_groupby_monthly)

输出:

代码语言:javascript
复制
<xarray.DataArray (month: 12, latitude: 106, longitude: 193)>
dask.array<shape=(12, 106, 193), dtype=int32, chunksize=(1, 106, 193)>
Coordinates:
  * latitude   (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
  * longitude  (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0
  * month      (month) int64 1 2 3 4 5 6 7 8 9 10 11 12

如何保持time datetime64[ns]的数据类型,并使月份坐标类似于"2016-01“、"2016-02”、"2016-03“、……、"2018-12”等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-20 07:16:24

我喜欢使用重采样方法。试试这个:

代码语言:javascript
复制
da_monthly  = da.resample('1m', on='time').sum()
票数 2
EN

Stack Overflow用户

发布于 2019-11-22 01:28:28

要对多个变量(例如年和月)执行更一般的xarray groupby操作,您可以在pandas MultiIndex中组合变量,使其成为无量纲坐标,并将其传递给groupby:

代码语言:javascript
复制
import pandas as pd
year_month_idx = pd.MultiIndex.from_arrays([da['time.year'], da['time.month']])
da.coords['year_month'] = ('time', year_month_idx)
da_monthly = da.groupby('year_month').sum()

还可以通过堆叠坐标来创建与groupby一起使用的MultiIndex。例如,给定一组纬度/经度坐标,您可以按所有唯一的经纬度位置分组:

代码语言:javascript
复制
da_stacked = da.stack(latlon=['lat','lon'])
da_stacked.groupby('latlon').sum()
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54776283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档