You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pandas编辑Excel原文件而非生成仅含处理列的新文件

解决方案

方案1:全量读取修改后回写(适合文件体积<100M的场景,操作最简单)

你当前只读取了AT、AU两列到DataFrame,导出时自然只会保留这两列。要保留原文件其他内容,先读取完整Excel文件,修改指定列后全量写回即可,操作前务必备份原文件,避免数据丢失。

import pandas as pd

# 读取完整Excel文件
df = pd.read_excel("datas2.xlsx")

# 向量化操作替换循环,效率远高于手动遍历,同时修正原代码iloc的用法错误(iloc是属性用[]访问,不是函数用())
# 逻辑和你原代码一致:从第3行(Excel行号)开始判断AU列的值,修改AT列
au_col_idx = df.columns.get_loc("AU")
mask = df.iloc[2:, au_col_idx] != 0
df.loc[mask[mask].index, "AT"] = "D2"
df.loc[mask[~mask].index, "AT"] = "D3"

# 写回原文件,index=False避免导出额外的索引列
df.to_excel("datas2.xlsx", index=False)

方案2:openpyxl直接修改指定列(适合大文件,无需加载全表到内存)

如果文件体积过大,全量读取内存不足,可以用openpyxl直接操作指定列的单元格,不影响其他内容:

from openpyxl import load_workbook
from openpyxl.utils import column_index_from_string

wb = load_workbook("datas2.xlsx")
# 如果要修改指定工作表,替换为ws = wb["你的工作表名称"]
ws = wb.active

# 转换列名对应的列号:AT=46,AU=47
at_col = column_index_from_string("AT")
au_col = column_index_from_string("AU")

# 从Excel第3行开始遍历,和原代码逻辑一致
for row in range(3, ws.max_row + 1):
    au_value = ws.cell(row=row, column=au_col).value
    target_value = "D2" if au_value != 0 else "D3"
    ws.cell(row=row, column=at_col, value=target_value)

# 保存修改
wb.save("datas2.xlsx")

内容的提问来源于stack exchange,提问作者Inv4sion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:48:02