使用Pandas线性复制粘贴行列的技术问题求助
批量处理Excel数据:将分散列转为两列多行结构
依赖安装
先安装必要的Python库:
pip install pandas openpyxl
自动化脚本实现
以下脚本会遍历指定文件夹下的所有.xlsx文件,将每行的A-B、D-E列拆分为两行两列的结构,并保存处理后的文件(原文件名后追加_processed):
import os import pandas as pd def process_excel_file(file_path): # 读取Excel文件,指定读取A、B、D、E列(对应列索引0,1,3,4) df = pd.read_excel(file_path, usecols=[0,1,3,4], header=0) # 初始化空列表存储处理后的数据 processed_data = [] # 遍历每一行数据 for _, row in df.iterrows(): # 提取A、B列作为第一组数据 processed_data.append({ '列1': row.iloc[0], '列2': row.iloc[1] }) # 提取D、E列作为第二组数据 processed_data.append({ '列1': row.iloc[2], '列2': row.iloc[3] }) # 将列表转为DataFrame processed_df = pd.DataFrame(processed_data) # 生成保存路径:原文件名后加_processed dir_name, file_name = os.path.split(file_path) name, ext = os.path.splitext(file_name) save_path = os.path.join(dir_name, f"{name}_processed{ext}") # 保存处理后的文件 processed_df.to_excel(save_path, index=False, engine='openpyxl') print(f"处理完成:{save_path}") def batch_process(folder_path): # 遍历文件夹下所有xlsx文件 for file_name in os.listdir(folder_path): if file_name.endswith('.xlsx'): file_path = os.path.join(folder_path, file_name) process_excel_file(file_path) if __name__ == "__main__": # 替换为你的Excel文件所在文件夹路径 target_folder = r"C:\你的Excel文件夹路径" batch_process(target_folder)
脚本说明
- 指定列读取:通过
usecols=[0,1,3,4]直接读取A(0)、B(1)、D(3)、E(4)列,跳过C列 - 数据拆分:每行拆分为两组数据,分别对应A-B和D-E,添加到结果列表
- 批量处理:自动遍历目标文件夹下所有
.xlsx文件,无需逐个手动处理 - 结果保存:处理后的文件与原文件同目录,文件名带
_processed后缀,避免覆盖原文件
注意事项
- 如果你的Excel文件是
.xls格式,将代码中的engine='openpyxl'改为engine='xlrd',并安装xlrd:pip install xlrd==1.2.0(新版本xlrd不支持xls) - 若表头不是第一行,修改
pd.read_excel中的header参数(比如header=1表示第二行是表头)
内容的提问来源于stack exchange,提问作者kylek748
相关产品推荐
相关产品推荐

