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

Python实现DataFrame数据按小数点对齐输出到TXT文件

实现DataFrame输出TXT时小数点对齐的方法

下面提供两种实用方案,帮你把带两位小数的DataFrame输出成小数点严格对齐的TXT文件:

方案一:用pandas自带方法快速实现

利用DataFrame.to_string()的formatters参数,给每列指定对齐的格式化模板,简单高效:

import pandas as pd

# 示例DataFrame(替换成你的数据)
df = pd.DataFrame({
    '数值列1': [12.34, 5.67, 123.45, 0.12],
    '数值列2': [987.65, 43.21, 6.78, 1000.99]
})

# 定义格式化规则:右对齐,总宽度7(整数部分最多4位+小数点+两位小数),固定两位小数
col_formatters = {col: f'{{:>7.2f}}' for col in df.columns}

# 生成对齐后的字符串(去掉索引)
aligned_content = df.to_string(formatters=col_formatters, index=False)

# 写入TXT文件
with open('对齐后的数值.txt', 'w', encoding='utf-8') as f:
    f.write(aligned_content)

说明

  • {:>7.2f}中,>表示右对齐,7是总字符宽度,.2f强制保留两位小数。
  • 如果你的数据整数部分位数更多(比如有5位整数),把总宽度改成8(5+1+2)即可,以此类推。

方案二:自动适配列宽的灵活方案

如果数据中各列的整数位数不固定,用这个方法可以自动计算每列需要的宽度,确保所有行的小数点都对齐:

import pandas as pd

df = pd.DataFrame({
    '数值列1': [12.34, 5.67, 123.45, 0.12],
    '数值列2': [987.65, 43.21, 6.78, 1000.99]
})

# 计算每列数值的最大整数位数
max_int_lengths = []
for col in df.columns:
    # 提取每个数值的整数部分,计算其长度,取最大值
    max_len = df[col].apply(lambda x: len(str(int(abs(x))))).max()
    max_int_lengths.append(max_len)

# 生成每列的格式化字符串:总宽度=最大整数位数+1(小数点)+2(小数)
col_formats = [f'{{:>{length + 3}.2f}}' for length in max_int_lengths]
# 生成表头的格式化字符串,保证表头和数据列宽度一致
header_format = ' '.join([f'{{:>{length + 3}}}' for length in max_int_lengths])
formatted_header = header_format.format(*df.columns)

# 格式化每一行数据
formatted_rows = []
for _, row in df.iterrows():
    formatted_row = ' '.join(col_formats).format(*row.values)
    formatted_rows.append(formatted_row)

# 组合表头和行数据
final_content = '\n'.join([formatted_header] + formatted_rows)

# 写入文件
with open('自动对齐的数值.txt', 'w', encoding='utf-8') as f:
    f.write(final_content)

输出效果示例

生成的TXT内容会是这样的,小数点完全对齐:

数值列1 数值列2
12.34 987.65
5.67 43.21
123.45 6.78
0.12 1000.99

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:15:30