【问题标题】:Split excel based on row values into multiple csv files using pandas python使用pandas python根据行值将excel拆分为多个csv文件
【发布时间】: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


    【解决方案1】:

    这是因为 Document No 列中的数字存储为文本而不是数字吗?末尾有一个绿色标记,表示错误。 您可以先将列中的字符串转换为数字,然后执行您的代码,这对我来说似乎很好。

    【讨论】:

      猜你喜欢
      • 2022-01-12
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 2021-01-26
      • 2015-09-03
      • 2021-02-24
      相关资源
      最近更新 更多