Untitled

 avatar
unknown
plain_text
a month ago
1.8 kB
3
Indexable
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')
    
    # Filtrar filas donde 'YIELD_RETURN' sea NaN
    self.df = self.df.dropna(subset=['YIELD_RETURN'])
    
    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