Разделите excel на основе значений строк на несколько файлов csv с помощью pandas python

#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 хранятся как текст, а не как числа? Ближе к концу есть зеленая метка, указывающая на ошибку. Вы можете сначала преобразовать строки в столбце в числа, а затем выполнить свой код, который мне кажется прекрасным.