xarray-contrib / cf-xarray

an accessor for xarray objects that interprets CF attributes
https://cf-xarray.readthedocs.io/
Apache License 2.0
157 stars 39 forks source link

when grouping by a flag array, set output coordinate using `flag_meanings` #472

Open dcherian opened 12 months ago

dcherian commented 12 months ago

This would be cool and particularly useful with regionmask

cc @mathause

mathause commented 11 months ago

That would be super cool! Would need to decide if the flag_values are kept as well. I assume you would add this in da.cf.groupby(groups)?

A short example (using regionmask - could of course be simplified to only using xarray):

import cf_xarray
import regionmask
import xarray as xr

air = xr.tutorial.open_dataset("air_temperature")
mask = regionmask.defined_regions.ar6.land.mask(air)

regional_mean = air.air.groupby(mask).mean()

regional_mean = regional_mean.assign_coords({mask.name: mask.attrs["flag_values"]})
regional_mean = regional_mean.assign_coords({"flags": mask.attrs["flag_meanings"]})

# or
regional_mean = regional_mean.assign_coords({mask.name: mask.attrs["flag_meanings"]})