@@ -51,8 +51,15 @@ class TimeSeriesData(xr.DataArray):
5151
5252 __slots__ = () # No additional instance attributes - everything goes in attrs
5353
54- def __init__ (self , * args , aggregation_group : Optional [str ] = None , aggregation_weight : Optional [float ] = None ,
55- agg_group : Optional [str ] = None , agg_weight : Optional [float ] = None , ** kwargs ):
54+ def __init__ (
55+ self ,
56+ * args ,
57+ aggregation_group : Optional [str ] = None ,
58+ aggregation_weight : Optional [float ] = None ,
59+ agg_group : Optional [str ] = None ,
60+ agg_weight : Optional [float ] = None ,
61+ ** kwargs
62+ ):
5663 """
5764 Args:
5865 *args: Arguments passed to DataArray
@@ -84,6 +91,23 @@ def __init__(self, *args, aggregation_group: Optional[str] = None, aggregation_w
8491 # Always mark as TimeSeriesData
8592 self .attrs ['__timeseries_data__' ] = True
8693
94+ def fit_to_coords (
95+ self ,
96+ coords : Dict [str , pd .Index ],
97+ name : Optional [str ] = None ,
98+ ) -> 'TimeSeriesData' :
99+ """Fit the data to the given coordinates. Returns a new TimeSeriesData object if the current coords are different."""
100+ if self .coords .equals (xr .Coordinates (coords )):
101+ return self
102+
103+ da = DataConverter .to_dataarray (self .data , coords = coords )
104+ return self .__class__ (
105+ da ,
106+ aggregation_group = self .aggregation_group ,
107+ aggregation_weight = self .aggregation_weight ,
108+ name = name if name is not None else self .name
109+ )
110+
87111 @property
88112 def aggregation_group (self ) -> Optional [str ]:
89113 return self .attrs .get ('aggregation_group' )
0 commit comments