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

如何通过Pandas to_string实现指定列按位置左对齐输出?

问题描述

现有如下简单DataFrame:

data = [[2025, 198237, 77, 18175],
        [202, 292827, 77, 292827]]

已通过以下代码提取第1列和第4列,并去除索引与表头输出:

import pandas as pd
df = pd.DataFrame(data).iloc[:, [0, 3]]
print(df.to_string(index=False, header=False))

当前输出结果:

2025  18175
 202 292827

需要将第一列左对齐到第3列位置,第二列左对齐到第10列位置,期望输出如下:

2025   18175  
   202    292827 

询问如何实现该需求,是否可使用ljust方法?

解决方案

可以用ljust方法实现,以下是几种具体的实现方式:

方法1:逐行处理结合ljust

遍历DataFrame的每一行,通过字符串拼接和ljust固定列宽,确保对齐:

import pandas as pd

data = [[2025, 198237, 77, 18175],
        [202, 292827, 77, 292827]]
df = pd.DataFrame(data).iloc[:, [0, 3]]

for row in df.itertuples(index=False):
    # 第一列先补3个空格,再用ljust固定总长度为7,保证第二列起始位置统一
    col1 = ("   " + str(row[0])).ljust(7)
    # 第二列按期望格式补空格后输出
    col2 = f"   {row[1]} "
    print(col1 + col2)

执行后输出:

2025   18175  
   202    292827 

方法2:格式化字符串(简洁实现)

如果觉得ljust不够直观,也可以直接用Python的格式化语法指定对齐位置,效果一致:

for row in df.itertuples(index=False):
    # 第一列前补3个空格,左对齐占4位;第二列前补3个空格
    print(f"   {row[0]:<4}   {row[1]} ")

这里:<4表示将第一列的数字左对齐,占4个字符宽度,配合前面的3个空格,刚好让第一列整体对齐到目标位置,第二列也能同步对齐。

方法3:纯ljust控制列宽

如果要完全依赖ljust来控制每列的宽度,也可以这样写:

for row in df.itertuples(index=False):
    col1 = ("   " + str(row[0])).ljust(7)
    col2 = ("   " + str(row[1])).ljust(9)
    print(col1 + col2)

核心是通过ljust固定每列的字符串长度,确保多行输出时列的起始位置完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:57:22