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

如何在Jupyter Notebook中保留Pandas DataFrame文本单元格换行符?

嘿,这个问题我之前也碰到过!在Jupyter Notebook里用默认的display(df)展示带多行文本(比如代码片段)的DataFrame时,换行符确实会被忽略,所有内容挤成一团。不过有几个简单又实用的办法可以解决,我给你详细说说:

方法1:用Styler设置CSS样式(最推荐)

这个方案不需要修改原始数据,直接通过CSS让单元格自动识别并保留换行,还能保证排版美观:

import pandas as pd
from IPython.display import display

# 先搞个带多行文本的示例DataFrame
data = {
    '代码片段': [
        'def hello():\n    print("Hello World")\n    return True',
        'x = 10\nif x > 5:\n    print("x is greater than 5")'
    ],
    '说明': ['这是个简单的函数示例', '这是基础的条件判断代码']
}
df = pd.DataFrame(data)

# 设置单元格样式,让换行生效
styled_df = df.style.set_properties(**{
    'white-space': 'pre-wrap',  # 保留换行,同时自动适应单元格宽度换行
    'text-align': 'left',       # 左对齐,更符合代码阅读习惯
    'font-family': 'monospace'  # 可选:用等宽字体显示代码
})
display(styled_df)

white-space: pre-wrap是关键——它会保留文本里的换行符,同时当内容超过单元格宽度时自动换行,比pre(强制不自动换行)更实用。

方法2:把换行符转为HTML换行标签

如果需要更灵活的HTML自定义,可以把文本里的\n替换成<br>,再用HTML格式展示:

from IPython.display import HTML

# 复制DataFrame并替换换行符为HTML标签(不修改原始数据)
display_df = df.copy()
display_df['代码片段'] = display_df['代码片段'].str.replace('\n', '<br>')

# 生成HTML并显示,注意要设置escape=False,不然<br>会被转义成文本
display(HTML(display_df.to_html(escape=False)))

这个方法适合需要给特定内容加HTML样式的场景,但要注意不要误修改原始数据。

方法3:针对特定列做自定义格式化

如果只有部分列需要保留换行,可以用style.format精准控制:

# 只对"代码片段"列处理换行,其他列保持原样
styled_df = df.style.format(
    lambda text: text.replace('\n', '<br>'),
    subset=['代码片段']  # 指定要处理的列
)
display(styled_df)

这个方案针对性强,不会影响其他列的默认展示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:51:53