You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

将Excel导入Pandas DataFrame后保留单元格换行符的方法

嘿,这个问题我之前处理过好几次!Excel里用CHR(10)(对应Python里的\n换行符)实现的单元格内多行文本,Pandas默认导入时偶尔会把这些换行吞掉,不过有几个靠谱的解决办法:

方法1:指定正确的读取引擎

Pandas 1.2版本之后,读取.xlsx文件默认用openpyxl引擎,但如果你用的是旧版本,或者引擎被覆盖了,手动指定engine='openpyxl'就能保留换行符。

首先确保你安装了openpyxl:

pip install openpyxl

然后读取代码:

import pandas as pd

# 读取时指定openpyxl引擎,自动保留单元格内的\n换行
df = pd.read_excel('your_excel_file.xlsx', engine='openpyxl')
方法2:自定义转换器(针对特定列或全局)

如果你的文件格式特殊,或者引擎读取后还是丢失了换行,可以用converters参数自定义转换逻辑,强制保留换行符(有时候Excel里的换行可能是\r而不是\n,需要替换统一):

def preserve_newlines(cell_value):
    if isinstance(cell_value, str):
        # 把可能的\r替换成\n,确保换行符统一
        return cell_value.replace('\r', '\n')
    return cell_value

# 针对某一列处理,把'目标列名'换成你的列名
df = pd.read_excel('your_excel_file.xlsx', converters={'目标列名': preserve_newlines})

# 如果要全局处理所有列,可以用这个写法
df = pd.read_excel(
    'your_excel_file.xlsx',
    converters={col: preserve_newlines for col in pd.ExcelFile('your_excel_file.xlsx').parse().columns}
)
验证换行是否保留

读取后可以打印某个单元格的内容来确认:

# 比如查看第0行、'目标列名'的内容
print(df.loc[0, '目标列名'])

如果输出里有换行,说明已经成功保留了。要是在Jupyter Notebook里看不到换行,可以先设置显示选项:

pd.set_option('display.max_colwidth', None)

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

火山引擎 最新活动