基于Python Pandas拆分38000行Excel为每1000行文件的实现方案
修改后的Python脚本(实现Excel按行拆分+DeepL翻译)
下面是调整后的脚本,既能完成DeepL翻译,又能按每1000行拆分生成独立Excel文件:
import pandas as pd import os import deepl # 工作目录和输出目录(可根据实际修改) WORK_DIR = r'C:\Users\Admin\XXX' OUTPUT_DIR = r'C:\Users\Admin\拆分结果' # 创建输出目录,不存在则自动生成 os.makedirs(OUTPUT_DIR, exist_ok=True) # DeepL授权密钥 AUTH_KEY = 'XX' translator = deepl.Translator(AUTH_KEY) # 遍历目录下的Excel文件 for file_name in os.listdir(WORK_DIR): if file_name.endswith('.xlsx'): file_path = os.path.join(WORK_DIR, file_name) print(f"正在处理文件: {file_name}") # 获取所有sheet名并逐个处理 sheet_names = pd.ExcelFile(file_path).sheet_names for sheet_name in sheet_names: print(f" 正在处理sheet: {sheet_name}") # 读取当前sheet的数据 df = pd.read_excel(file_path, sheet_name=sheet_name) # 预处理:将布尔值True/False转为空字符串,保留原非布尔值 for col in df.columns: df[col] = df[col].map({True: '', False: ''}).fillna(df[col]) # 翻译指定列(替换为你需要翻译的列名) translate_col = 'COLUMN TO TRANSLATE' df['TRANSLATE'] = df[translate_col].apply( lambda x: translator.translate_text(x, target_lang="CS") if isinstance(x, str) else x ) # 只保留需要的列(原翻译列+新生成的翻译结果列) df = df.reindex(columns=[translate_col, 'TRANSLATE']) # 按每1000行拆分数据 chunk_size = 1000 total_chunks = len(df) // chunk_size + (1 if len(df) % chunk_size != 0 else 0) for i in range(total_chunks): start_idx = i * chunk_size end_idx = min((i+1)*chunk_size, len(df)) chunk_df = df.iloc[start_idx:end_idx] # 生成拆分后的文件名:原文件名_sheet名_拆分序号.xlsx output_file_name = f"{os.path.splitext(file_name)[0]}_{sheet_name}_拆分{i+1}.xlsx" output_file_path = os.path.join(OUTPUT_DIR, output_file_name) # 保存为Excel文件,不包含索引 chunk_df.to_excel(output_file_path, index=False) print(f" 已生成文件: {output_file_name}") print("所有文件处理完成!")
关键修改说明:
- 路径优化:将硬编码的路径改为变量,新增输出目录自动创建逻辑,避免手动创建文件夹
- Sheet处理修复:读取Excel时指定具体sheet名,原脚本未指定导致重复读取第一个sheet
- 拆分逻辑实现:通过
iloc切片按1000行分割DataFrame,自动计算拆分数量,生成带序号的文件名 - 翻译逻辑优化:提前初始化DeepL翻译器,避免循环中重复创建实例,提升效率
- 输出规范:拆分后的文件名包含原文件名、sheet名和拆分序号,方便区分
内容的提问来源于stack exchange,提问作者HEV
相关产品推荐
相关产品推荐

