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

如何在Pandas DataFrame中用\n换行且不拆分数据行

如何在Pandas DataFrame单元格内实现换行(不拆分数据行)

测试数据

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'KEY': [4507,211,5294,2233,2260],
    'NAME':['kim young','laa eudong','kill gil','lee suk','No hee'],
    'FIND_DATE':[20130518,20140626,20140215,20141121,20140910],
    'EVENT_DTL':['A','B','C','D','E']
})

df.loc[:3,'EVENT_DTL'] = np.nan

需求说明

需要为EVENT_DTL列的NaN值填充多行文本,要求每个KEY对应的内容保留在同一单元格内,通过\n实现换行,不拆分数据行。

错误尝试代码

# 错误的填充方式
idx = df.EVENT_DTL.isna()
df.loc[idx,'EVENT_DTL'] = ('1. 변사자 정보 : '+df.loc[idx,'NAME']+df.loc[idx,'FIND_DATE'].astype(str).str[:4]+'년'+df.loc[idx,'FIND_DATE'].astype(str).str[4:6]+'월'+' '+'\n3. 발견장소 : \n1) 수사기록 상 주소 \n주민등록상 주소 : ').str.split('\n')

df = df.explode('EVENT_DTL')

错误输出结果

KEY EVENT_DTL
2143    4507    1. 변사자 정보 : kim young2013년05월
2143    4507    3. 발견장소 :
2143    4507    1) 수사기록 상 주소
2143    4507    주민등록상 주소 :
2386    211     1. 변사자 정보 : Laa euong2014년06월
2386    211     3. 발견장소 :
2386    211     1) 수사기록 상 주소
2386    211     주민등록상 주소 :

期望输出效果

KEY EVENT_DTL
    2143    4507    1. 변사자 정보 : kim young2013년05월
                    3. 발견장소 :
                    1) 수사기록 상 주소
                    주민등록상 주소 :
    2386    211     1. 변사자 정보 : Laa euong2014년06월
                    3. 발견장소 :
                    1) 수사기록 상 주소
                    주민등록상 주소 :

解决方案

1. 正确填充带换行符的文本

不需要将字符串拆分为列表,直接拼接包含\n的完整字符串赋值给目标列:

idx = df.EVENT_DTL.isna()
df.loc[idx,'EVENT_DTL'] = (
    '1. 변사자 정보 : ' + df.loc[idx,'NAME'] + 
    df.loc[idx,'FIND_DATE'].astype(str).str[:4] + '년' + 
    df.loc[idx,'FIND_DATE'].astype(str).str[4:6] + '월' + 
    '\n3. 발견장소 : \n1) 수사기록 상 주소 \n주민등록상 주소 : '
)

2. 让换行效果可见

默认情况下Pandas可能不会显示换行,需要调整显示设置:

  • 终端/控制台显示:设置最大列宽,让完整文本显示:
pd.set_option('display.max_colwidth', None)

此时输出时\n会被解析为换行,呈现出单元格内多行的效果。

  • Jupyter Notebook显示:使用Styler设置文本自动换行样式,让换行效果更直观:
df.style.set_properties(**{'white-space': 'pre-wrap'})

原理说明

之前的错误在于使用str.split('\n')将字符串转为列表,再通过explode将列表元素拆分为多行。而实际需求是保留包含\n的字符串在单个单元格内,通过调整显示设置让换行符生效即可实现目标效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:15:30