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

如何将DataFrame转换为纵向Markdown表格并同步至Excel?

DataFrame转纵向Markdown表格并保存至Excel方案

一、自定义函数生成纵向Markdown表格

针对转置后使用to_markdown()出现的表头异常问题,可通过自定义函数直接生成符合要求的纵向Markdown表格(列标题位于行首,带管道符和分隔线),且适配任意大小的DataFrame:

def df_to_vertical_md(df):
    # 初始化Markdown表格基础结构
    md_table = "| 项目 | 数据 |\n"
    md_table += "|------|------|\n"
    
    # 遍历原DataFrame的每一列(列名作为纵向表格的分类标题)
    for col in df.columns:
        # 添加加粗的列名行
        md_table += f"| **{col}** | |\n"
        # 依次写入该列的所有数据
        for idx, val in enumerate(df[col], 1):
            md_table += f"| 行{idx} | {val} |\n"
    
    return md_table

函数说明

  • 先构建纵向表格的固定表头("项目"和"数据")
  • 自动遍历原DataFrame的所有列,将列名作为加粗的分类项
  • 逐行写入对应列的数据,适配任意行数和列数的DataFrame

示例测试

import pandas as pd

# 构建你提供的示例DataFrame
data = {
    "Project 1": ["data 1", "data 4", "data 7"],
    "Project 2": ["data 2", "data 5", "data 8"],
    "Project 3": ["data 3", "data 6", "data 9"]
}
df = pd.DataFrame(data)

# 生成纵向Markdown表格
vertical_md = df_to_vertical_md(df)

输出的Markdown表格如下:

| 项目 | 数据 |
|------|------|
| **Project 1** | |
| 行1 | data 1 |
| 行2 | data 4 |
| 行3 | data 7 |
| **Project 2** | |
| 行1 | data 2 |
| 行2 | data 5 |
| 行3 | data 8 |
| **Project 3** | |
| 行1 | data 3 |
| 行2 | data 6 |
| 行3 | data 9 |

渲染后效果:

项目数据
Project 1
行1data 1
行2data 4
行3data 7
Project 2
行1data 2
行2data 5
行3data 8
Project 3
行1data 3
行2data 6
行3data 9

二、将Markdown表格存入Excel

使用openpyxl库可直接把生成的Markdown表格字符串写入Excel指定单元格,方便后续更新Markdown网站。以下是翻译并优化后的代码:

from openpyxl import load_workbook

# 传入之前生成的Markdown表格字符串
vertical_md = df_to_vertical_md(df)

# Excel文件路径
file_source = 'Source Used.xlsx'

# 加载目标Excel工作簿
workbook = load_workbook(filename=file_source)

# 选择要写入的工作表(替换为你的实际工作表名称)
ws4 = workbook["Project X"]

# 将Markdown表格写入指定单元格(此处为第1行第1列)
ws4.cell(row=1, column=1).value = vertical_md

# 保存修改后的Excel文件
workbook.save(filename=file_source)

注意事项

  1. 需提前安装openpyxl库:pip install openpyxl
  2. 若目标工作表不存在,需先创建:workbook.create_sheet("Project X")
  3. 写入的单元格会完整保留Markdown格式字符串,后续可直接复制到Markdown文件中使用

三、横向Markdown表格生成(补充)

如果需要生成横向表格,可直接使用to_markdown()并移除索引:

horizontal_md = df.to_markdown(index=False)

输出:

| Project 1   | Project 2   | Project 3   |
|:------------|:-----------:|------------:|
| data 1      |   data 2    |      data 3 |
| data 4      |   data 5    |      data 6 |
| data 7      |   data 8    |      data 9 |

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:52:43