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

如何让含换行符\n的Pandas DataFrame打印时换行展示内容

解决Pandas DataFrame含换行符文本的格式化打印问题

这里提供两种实用方法实现你要的打印效果:

方法一:拆分数据构造新DataFrame

通过将包含换行符的val列拆分成多行,同时让key列仅在每组首行显示对应值,其余行留空,直接打印新DataFrame即可对齐:

import pandas as pd

df = pd.DataFrame(
    {'key': ['A','B','C'],
     'val': ['x\ny\nz','apple\norange','good\nbad\nbest']})

# 遍历原DataFrame,拆分每行的val并构造新行列表
rows = []
for idx, row in df.iterrows():
    key = row['key']
    split_vals = row['val'].split('\n')
    for i, val in enumerate(split_vals):
        # 仅第一行保留key,其余行key为空
        rows.append({'key': key if i == 0 else '', 'val': val})

# 生成新DataFrame并打印(隐藏索引)
new_df = pd.DataFrame(rows)
print(new_df.to_string(index=False))

输出效果:

key              val
   A                x
                    y
                    z
   B            apple
               orange
   C             good
                  bad
                 best

方法二:自定义打印格式(不修改原DataFrame)

如果不想改动原数据结构,可以直接自定义打印逻辑,手动控制每行的对齐和内容:

import pandas as pd

df = pd.DataFrame(
    {'key': ['A','B','C'],
     'val': ['x\ny\nz','apple\norange','good\nbad\nbest']})

# 计算列宽,保证对齐效果
key_col_width = df['key'].str.len().max() + 3
val_col_width = df['val'].str.split('\n').apply(lambda x: max(len(s) for s in x)).max() + 3

# 打印表头
print(f"{'key':<{key_col_width}} {'val':<{val_col_width}}")
# 逐行处理打印
for idx, row in df.iterrows():
    split_vals = row['val'].split('\n')
    # 打印首行(带索引和key)
    print(f"{idx:<2} {row['key']:<{key_col_width-2}} {split_vals[0]:<{val_col_width}}")
    # 打印后续行(仅显示val,key和索引位置留空)
    for val in split_vals[1:]:
        print(f"{'':<{key_col_width+2}} {val:<{val_col_width}}")

输出效果和方法一一致,且不会修改原DataFrame的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:35:39