Untitled
unknown
plain_text
a year ago
3.3 kB
5
Indexable
import os
import pandas as pd
from datetime import datetime, timedelta
class FileConcatenator:
def __init__(self, input_folder, output_file, start_date, days_to_process, scenario_number_start):
self.input_folder = input_folder
self.output_file = output_file
self.start_date = datetime.strptime(start_date, "%Y-%m-%d")
self.days_to_process = days_to_process
self.scenario_number_start = scenario_number_start
def generate_weekdays(self):
weekdays = []
current_date = self.start_date
while len(weekdays) < self.days_to_process:
if current_date.weekday() < 5: # Monday to Friday
weekdays.append(current_date.strftime("%Y%m%d"))
current_date -= timedelta(days=1)
return weekdays
def process_files(self):
file_dates = self.generate_weekdays()
concatenated_data = []
for i, file_date in enumerate(file_dates):
scenario_number = self.scenario_number_start - i
# Buscar ficheros con la fecha en el nombre
matching_files = [f for f in os.listdir(self.input_folder) if file_date in f]
for file in matching_files:
file_path = os.path.join(self.input_folder, file)
# Leer el fichero como CSV
df = pd.read_csv(file_path, sep='\t', engine='python')
# Seleccionar y renombrar las columnas según las equivalencias
processed_data = df.assign(
**{
'Scenario Number': scenario_number,
'Instrument Label': df['DISPLAYED'],
'Market Label': df['MARKET'],
'Maturity Label': '',
'Quotation Mode': 'YIELD',
'Shift Type': 'Std',
'Shift Value': df['YIELD'],
'Initial Value': '',
'Router': ''
}
)
# Seleccionar solo las columnas necesarias
processed_data = processed_data[[
'Scenario Number', 'Instrument Label', 'Market Label', 'Maturity Label',
'Quotation Mode', 'Shift Type', 'Shift Value', 'Initial Value', 'Router'
]]
# Añadir al conjunto de datos concatenados
concatenated_data.append(processed_data)
return concatenated_data
def save_to_csv(self, concatenated_data):
final_df = pd.concat(concatenated_data, ignore_index=True)
final_df.to_csv(self.output_file, index=False, sep='|')
print(f"Proceso completado. Archivo concatenado guardado en {self.output_file}")
# Parámetros iniciales
input_folder = r'C:\Users\x528785\Downloads\OneDrive_1_13-12-2024'
output_file = r'C:\Users\x528785\Downloads\concatenated_file.csv'
start_date = "2024-11-29"
days_to_process = 521
scenario_number_start = 4.565
# Ejecutar la clase
concatenator = FileConcatenator(input_folder, output_file, start_date, days_to_process, scenario_number_start)
data = concatenator.process_files()
concatenator.save_to_csv(data)
Editor is loading...
Leave a Comment