Untitled
unknown
plain_text
a year ago
2.6 kB
4
Indexable
import pandas as pd import pathlib import glob # Обновленный словарь для преобразования названий периодов period_dict = { 'январь-март': '31.03', 'январь-июнь': '30.06', 'январь-сентябрь': '30.09', 'январь-декабрь': '31.12' } # Функция для преобразования названий периодов и года в формат даты def period_to_date(period_name, year): date_suffix = period_dict.get(period_name.lower(), '31.03') return f'{date_suffix}.{year}' def convert_date(row): parts = row['Дата'].split('.') period = parts[0] year_suffix = int(parts[1]) if len(parts) > 1 and parts[1].isdigit() else 0 year = 2016 + year_suffix if period in period_dict: return f"{period_dict[period]}.{year}" else: return row['Дата'] def process_file(file_path): data = pd.read_excel(file_path, header=3) new_headers = [] current_year = 2016 # Установите начальный год данных for col in data.columns: period_name = ''.join(filter(str.isalpha, col)) if period_name.lower() in period_dict: new_headers.append(period_to_date(period_name, str(current_year))) if period_name.lower() == 'январь-декабрь': current_year += 1 else: new_headers.append(col) data.columns = new_headers data.set_index(data.columns[0], inplace=True) data.index.names = ['Регион'] data.reset_index(inplace=True) data = data.set_index(['Регион']).reset_index() data = data.loc[:, ~data.columns.duplicated()] data = pd.melt(data, id_vars=['Регион'], var_name='Дата', value_name='Значение') data['Регион'] = data['Регион'].str.strip().str.replace(r'\s+', ' ', regex=True) data['Значение'] = pd.to_numeric(data['Значение'], errors='coerce').fillna(0) data = data[~data['Дата'].str.startswith('Unnamed')] data.reset_index(drop=True, inplace=True) data['Дата'] = data.apply(convert_date, axis=1) output_file_path = file_path.replace('.xlsx', '.csv') data.to_csv(output_file_path, index=False, sep=';', lineterminator='\t') # Дополнительно: загрузка и проверка одного из файлов file_path = '05-04 экспорт.xlsx' processed_data = process_file(file_path) data = pd.read_csv('05-04 экспорт.csv', sep=';', lineterminator='\t') data
Editor is loading...
Leave a Comment