Added expand function, not fully working yet
This commit is contained in:
		
							parent
							
								
									d24b0d8bb2
								
							
						
					
					
						commit
						ff865cb2b9
					
				| @ -7,7 +7,7 @@ from typing import Iterable, List, Literal, Mapping, Union | |||||||
| 
 | 
 | ||||||
| from dateutil.relativedelta import relativedelta | from dateutil.relativedelta import relativedelta | ||||||
| 
 | 
 | ||||||
| from .core import AllFrequencies, Series, TimeSeriesCore, date_parser | from .core import AllFrequencies, Frequency, Series, TimeSeriesCore, date_parser | ||||||
| from .utils import ( | from .utils import ( | ||||||
|     FincalOptions, |     FincalOptions, | ||||||
|     _find_closest_date, |     _find_closest_date, | ||||||
| @ -535,6 +535,30 @@ class TimeSeries(TimeSeriesCore): | |||||||
| 
 | 
 | ||||||
|         return max_drawdown |         return max_drawdown | ||||||
| 
 | 
 | ||||||
|  |     def expand( | ||||||
|  |         self, to_frequency: Literal["D", "W", "M", "Q", "H"], method: Literal["ffill", "bfill", "interpolate"] | ||||||
|  |     ) -> TimeSeries: | ||||||
|  |         try: | ||||||
|  |             to_frequency: Frequency = getattr(AllFrequencies, to_frequency) | ||||||
|  |         except AttributeError: | ||||||
|  |             raise ValueError(f"Invalid argument for to_frequency {to_frequency}") | ||||||
|  | 
 | ||||||
|  |         if to_frequency.days >= self.frequency.days: | ||||||
|  |             raise ValueError("TimeSeries can be only expanded to a higher frequency") | ||||||
|  | 
 | ||||||
|  |         new_dates = create_date_series(self.start_date, self.end_date, frequency=to_frequency.symbol) | ||||||
|  |         new_ts: dict = {dt: self.data.get(dt, None) for dt in new_dates} | ||||||
|  |         output_ts: TimeSeries = TimeSeries(new_ts, frequency=to_frequency.symbol) | ||||||
|  | 
 | ||||||
|  |         if method == "ffill": | ||||||
|  |             output_ts.ffill(inplace=True) | ||||||
|  |         elif method == "bfill": | ||||||
|  |             output_ts.bfill(inplace=True) | ||||||
|  |         else: | ||||||
|  |             raise NotImplementedError(f"Method {method} not implemented") | ||||||
|  | 
 | ||||||
|  |         return output_ts | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||||
|     date_series = [ |     date_series = [ | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user