【发布时间】:2021-10-20 07:33:46
【问题描述】:
我想将大型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}\' ----> ({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 行“documentNo”列值匹配)到第 10 行“DocumentNo”,那么拆分应该从第 13 行开始,而不是从第 11 行开始。 在下面的示例中,拆分应该从第 13 行而不是第 11 行开始(chunk_size 设置为 10)
【问题讨论】:
标签: python excel pandas dataframe