python-读取excel+处理字段+另存为excel的标准操作流程

最近经常用python处理excel,基本就是读取、处理字段、再保存。这里先把基础操作抽出来,下次直接使用就好了:

# -*- coding: utf-8 -*-
import pandas as pd
import os
# 函数
def process_excel(file_name):
    # 读取excel文件的所有sheet
    sheets = pd.read_excel(file_name, sheet_name=None)
    # 存储要写出到excel文件的处理结果, key是sheet名称, value是dataframe
    results = {}
    # 获取所有sheet的名称
    sheet_names = list(sheets.keys())
    # 遍历每个sheet
    for sheet in sheet_names:
        df = sheets[sheet]
        if sheet == 'B': # 跳过某些sheet, 不做处理
            results['B'] = df
            continue
        # 获取所有列名
        column_names = list(df.columns)
        #print(column_names)
        # 获取行数
        nrow = df.shape[0]
        # 遍历每一行
        for ridx in range(nrow):
            # 获取某行某列的数据
            snp = str(df.loc[ridx, 'snp'])
            # 做一些处理...
            # 修改某些位置的值
            df.loc[ridx, 'seq'] = "blabla"
        # 这个sheet处理完了
        results[sheet] = df
    # 创建一个新文件
    xlsx_name = 'new_' + file_name
    cur_file_names = os.listdir()
    if xlsx_name not in cur_file_names:
        empty_df = pd.DataFrame()
        empty_df.to_excel(xlsx_name)
    # 可选:按sheet名称排序(也可以key=sheet_names.index)
    results = sorted(results.items(),key=lambda i:i[0])
    # 排序完是元组的列表
    with pd.ExcelWriter(xlsx_name, mode='a', engine="openpyxl") as writer:
        for i in results:
            i[1].to_excel(writer, sheet_name=i[0], index=False)
# main
if __name__ == '__main__':
    process_excel("snp_table.xlsx")

你可能感兴趣的:(python大法好,excel,python)