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

如何将两个同结构Pandas DataFrame分别导出为Excel单元格内容与批注?

给Excel单元格批量添加对应DataFrame内容作为批注的实现方案

可以通过pandas结合openpyxl库快速实现需求,具体步骤如下:

1. 导出基础数据到Excel

先将df_chart导出到目标Excel文件,注意指定openpyxl作为引擎,方便后续修改:

import pandas as pd
from openpyxl import load_workbook
from openpyxl.comments import Comment

# 导出df_chart到Excel
output_file = "result.xlsx"
df_chart.to_excel(output_file, sheet_name="Chart", engine="openpyxl", index=True, header=True)

2. 加载文件并批量添加批注

加载生成的Excel文件,遍历df_comments的每个单元格,将对应内容添加为df_chart单元格的批注:

# 加载工作簿和指定工作表
wb = load_workbook(output_file)
ws = wb["Chart"]

# 遍历df_comments的每一行和每一列
for row_num, (index_label, row_data) in enumerate(df_comments.iterrows(), start=2):
    for col_num, comment_content in enumerate(row_data, start=1):
        # 跳过空值,避免添加无意义的空批注
        if pd.notna(comment_content):
            # 获取对应单元格并添加批注
            target_cell = ws.cell(row=row_num, column=col_num)
            target_cell.comment = Comment(str(comment_content), "批注作者")

# 保存修改后的文件
wb.save(output_file)

关键说明

  • 单元格索引对应:openpyxl的单元格行/列从1开始计数,enumerate(start=2)是因为表头占了第1行,数据从第2行开始;列从第1列开始对应DataFrame的第一列。
  • 自定义索引适配:如果你的DataFrame使用了非默认的自定义索引,上述代码的row_num计算依然有效,因为enumerate(start=2)会自动对应到Excel的行位置(表头行之后的第一行数据)。
  • 空值处理:通过pd.notna()过滤空的批注内容,避免给单元格添加空批注。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 09:25:05