Untitled
def transform_file(self): self.df = self.df[["YIELD_RETURN", "MUREX_instrument"]] self.df['YIELD_RETURN'] = self.df['YIELD_RETURN'].str.split(";") self.df = self.df.explode('YIELD_RETURN').reset_index(drop=True) self.df['YIELD_RETURN'] = pd.to_numeric(self.df['YIELD_RETURN'], errors='coerce') self.df['YIELD_RETURN'] = self.df['YIELD_RETURN'].apply(lambda x: f'{x:.10f}').str.rstrip('0').str.rstrip('.') start = 4046 add = 519 vectorscenarios = np.arange(start, start+add+1) Instruments = self.df["MUREX_instrument"].drop_duplicates().tolist() data ={ "MUREX_instrument": [v1 for v1 in Instruments for v2 in vectorscenarios], 'Scenario Number': [v2 for v1 in Instruments for v2 in vectorscenarios] } scenarios = pd.DataFrame(data) self.market = self.market[['DISPLAYED', 'MARKET']] self.df = pd.merge(self.df, self.market, how='left', left_on=['MUREX_instrument'], right_on=['DISPLAYED']).drop(columns=['DISPLAYED']) print(len(scenarios)) print(len(self.df)) #self.df = pd.merge(self.df, scenarios, how='left', left_on=['MUREX_instrument'], right_on=['MUREX_instrument']) self.df_out['Instrument Label'] = self.df['MUREX_instrument'] self.df_out['Scenario Number'] = scenarios['Scenario Number'] self.df_out['Market Label'] = self.df['MARKET'] self.df_out['Maturity Label'] = "" self.df_out['Quotation Mode'] = "YIELD" self.df_out['Shift Type'] = "Std" self.df_out['Shift Value'] = self.df['YIELD_RETURN'] self.df_out['Initial Value'] ="" self.df_out['Router'] =""
Leave a Comment