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

如何用Python向Pandas Excel DataFrame末尾添加行并保持索引连续?

解决方案

方法1:使用Pandas(推荐)

原文件由Pandas导出,用Pandas读取并追加数据能完美匹配原格式,操作简单。

代码示例

import pandas as pd

# 读取原Excel文件,指定索引列为第1列(原导出时包含索引)
df = pd.read_excel("rankings.xlsx", index_col=0)

# 定义需要补充的列表
List1 = ["Sample", "Sample2", "Sample3"]
List2 = [1, 12, 20]
List3 = [1, 11, 12]

# 计算新数据的起始索引:原数据行数即为起始值(原9900条数据,索引从0到9899,新索引从9900开始)
start_idx = len(df)
# 创建新DataFrame并指定索引范围
new_df = pd.DataFrame(
    data={"Name": List1, "WTN": List2, "Dubs WTN": List3},
    index=range(start_idx, start_idx + len(List1))
)

# 合并原数据与新数据
updated_df = pd.concat([df, new_df])

# 导出回原Excel文件(建议先备份原文件,避免意外)
updated_df.to_excel("rankings.xlsx")

说明

  • 用len(df)获取原数据行数,确保新索引从9900开始,不受原索引是否连续的影响。
  • pd.concat会保留原列顺序和格式,避免手动操作单元格导致的格式混乱。

方法2:使用OpenPyXL(处理格式)

如果必须用OpenPyXL,需要手动提取原单元格样式并应用到新行,解决格式异常问题。

代码示例

from openpyxl import load_workbook

# 加载原工作簿
wb = load_workbook("rankings.xlsx")
ws = wb.active

# 获取原数据最后一行的行号
last_row = ws.max_row

# 定义需要补充的列表
List1 = ["Sample", "Sample2", "Sample3"]
List2 = [1, 12, 20]
List3 = [1, 11, 12]

# 提取原数据行的样式(以第2行数据为例)
sample_row = ws[2]
cell_styles = []
for cell in sample_row:
    cell_styles.append({
        "font": cell.font.copy(),
        "fill": cell.fill.copy(),
        "border": cell.border.copy(),
        "alignment": cell.alignment.copy()
    })

# 逐行追加数据并应用样式
for idx in range(len(List1)):
    current_row = last_row + 1 + idx
    # 填充索引列(第1列)
    cell = ws.cell(row=current_row, column=1, value=9900 + idx)
    cell.font = cell_styles[0]["font"]
    cell.fill = cell_styles[0]["fill"]
    cell.border = cell_styles[0]["border"]
    cell.alignment = cell_styles[0]["alignment"]
    
    # 填充Name列(第2列)
    cell = ws.cell(row=current_row, column=2, value=List1[idx])
    cell.font = cell_styles[1]["font"]
    cell.fill = cell_styles[1]["fill"]
    cell.border = cell_styles[1]["border"]
    cell.alignment = cell_styles[1]["alignment"]
    
    # 填充WTN列(第3列)
    cell = ws.cell(row=current_row, column=3, value=List2[idx])
    cell.font = cell_styles[2]["font"]
    cell.fill = cell_styles[2]["fill"]
    cell.border = cell_styles[2]["border"]
    cell.alignment = cell_styles[2]["alignment"]
    
    # 填充Dubs WTN列(第4列)
    cell = ws.cell(row=current_row, column=4, value=List3[idx])
    cell.font = cell_styles[3]["font"]
    cell.fill = cell_styles[3]["fill"]
    cell.border = cell_styles[3]["border"]
    cell.alignment = cell_styles[3]["alignment"]

# 保存工作簿
wb.save("rankings.xlsx")

说明

  • 提取原数据行的样式并复制到新单元格,保证格式与原文件一致。
  • 此方法步骤繁琐,仅在无法使用Pandas时采用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:53:18