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

Pandas如何导出按列最大长度对齐的竖线分隔DataFrame文本文件

Pandas导出竖线分隔对齐文本表格实现方案

Pandas自带的to_string、to_csv方法默认不支持按列最大宽度自动对齐+竖线全包裹的格式化输出,手动计算列宽逐行拼接是最可控的实现方式,完全满足列宽取「表头长度、列内数据最大长度二者较大值」的对齐要求。


第一步:构造测试DataFrame

import pandas as pd

df = pd.DataFrame({
        'ID': {
            0: 11404371006,
            1: 11404371007,
            2: 11404371008,
            3: 11404371009,
            4: 11404371010,
            5: 11404371011
        },
        'TABLE.F1': {
            0: 'Y',
            1: 'NULL',
            2: 'N',
            3: 'N',
            4: 'N',
            5: 'N'
        },
        'O': {
            0: False,
            1: False,
            2: False,
            3: False,
            4: False,
            5: False
        }
    })

第二步:对齐导出实现代码

# 1. 预处理:所有值转字符串,计算每列需要的对齐宽度
str_df = df.astype(str)
col_widths = {}
for col in str_df.columns:
    max_data_length = str_df[col].str.len().max()
    # 宽度取列表头长度、列内数据最大长度的较大值
    col_widths[col] = max(len(col), max_data_length)

# 2. 逐行拼接格式化内容
output_lines = []
# 拼接表头行
header_cells = [f" {col.ljust(col_widths[col])} " for col in str_df.columns]
output_lines.append(f"|{'|'.join(header_cells)}|")

# 可选:拼接表头和数据之间的分隔线,不需要可以直接删除这两行
sep_cells = [f"{'-'*(col_widths[col]+2)}" for col in str_df.columns]
output_lines.append(f"|{'|'.join(sep_cells)}|")

# 拼接所有数据行
for _, row in str_df.iterrows():
    row_cells = [f" {str(row[col]).ljust(col_widths[col])} " for col in str_df.columns]
    output_lines.append(f"|{'|'.join(row_cells)}|")

# 3. 写入本地文本文件
final_content = "\n".join(output_lines)
with open("aligned_output.txt", "w", encoding="utf-8") as f:
    f.write(final_content)

# 打印预览效果
print(final_content)

输出效果参考

运行后生成的文本内容格式如下,所有列严格对齐:

| ID          | TABLE.F1 | O     |
|-------------|----------|-------|
| 11404371006 | Y        | False |
| 11404371007 | NULL     | False |
| 11404371008 | N        | False |
| 11404371009 | N        | False |
| 11404371010 | N        | False |
| 11404371011 | N        | False |

自定义调整说明

  • 如果不需要表头和数据之间的横分隔线,直接删除代码中拼接sep_cells的两行即可
  • 如果需要内容右对齐,把代码中所有的ljust方法替换为rjust即可
  • 如果需要调整单元格内边距,修改单元格拼接时前后添加的空格数量即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:24:10