#python #excel #pandas #dataframe
Вопрос:
Я хочу разделить большой файл excel на несколько файлов csv определенного размера (например, по 10 строк в каждом), как показано ниже:
# Function to split sheets def split_xls_to_csv(file_location,chunk_size,dest_dir,archive_dir): curr_date = datetime.now().strftime("%d-%m-%Y") curr_time = datetime.now().strftime("%H-%M-%S") file_name = os.path.basename(file_location) try: logMessage(f"Processing file '{file_name}'.") batch = 0 df = pd.read_excel(file_location) file_count = math.ceil(len(df) / chunk_size) for chunk in np.array_split(df, file_count): logMessage(f'Splitting file '{file_name}' ----gt; ({batch 1} of {file_count})') o_filename = f'{file_name.replace(".xlsx","")}_{curr_date}_{curr_time}_{batch 1}.csv' output_path = os.path.join(f'../{dest_dir}', o_filename) chunk.to_csv(output_path, index=False, header=True) batch = 1 logMessage("Splitting file completed. !!!") except Exception as ex: logError("Exception: ")
На приведенном ниже изображении показан пример excel, в котором я установил разделение на 10 строк, что происходит идеально, но загвоздка в том, что если 10-я строка и следующие подряд строки, такие как 11, 12 строк, значение столбца «Документально» соответствует 10-й строке «Документально», то разделение должно происходить с 13-й строки, а не с 11-й строки. В приведенном ниже примере разделение должно происходить с 13-й строки, а не с 11-й строки (размер фрагмента равен 10).
Ответ №1:
Происходит ли это из-за того, что числа в столбце документа No хранятся как текст, а не как числа? Ближе к концу есть зеленая метка, указывающая на ошибку. Вы можете сначала преобразовать строки в столбце в числа, а затем выполнить свой код, который мне кажется прекрасным.