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

如何在Lambda函数中用\n和\t填充DataFrame空值并格式化输出

问题描述

我有一个包含10万行、300列的大规模DataFrame,需要从其他列提取值填充EVENT_DTL列的NaN值。示例DataFrame如下:

NAME    RRN_FRONT    RRN_BACK    EVENT_DTL
1    JOHN    891105       1067714     NaN
2    SHOWN   791134       1156543     NaN
3    BROWN   581104       1668314     NaN
4    MIKE    984564       0153422     1. Name : MIKE 
                                      2. BIRTHDAY : 984564 
                                      3. SSN : 0153422
5    LARRY   796515       0168165     1. Name : LARRY 
                                      2. BIRTHDAY : 796515 
                                      3. SSN : 0168165    

期望将NaN值替换为包含NAME、RRN_FRONT、RRN_BACK的指定多行缩进格式内容。现有代码执行后输出格式错误,无法得到预期的换行缩进效果:

df.loc[df.EVENT_DTL.isnull(), 'EVENT_DTL'] = df.apply(lambda x: ('1. NAME : ' + str(x['NAME']) + '\n2. BIRTHDAY : ' + str(x['RRN_FRONT']) + '\n3. SSN : ' + str(x['RRN_BACK']),axis=1)
解决方案

1. 核心问题分析

原代码存在两个问题:一是语法错误(axis=1的括号位置错误);二是缺少缩进空格,无法匹配示例中的多行缩进格式。同时,针对10万行的大数据量,apply逐行操作效率偏低,优先推荐向量化处理。

2. 高效实现方案(向量化拼接,推荐)

# 筛选出需要填充的行
mask = df['EVENT_DTL'].isnull()

# 构造带缩进的多行内容,空格数量可按需调整
df.loc[mask, 'EVENT_DTL'] = (
    '1. Name : ' + df.loc[mask, 'NAME'] + '\n' +
    ' ' * 30 + '2. BIRTHDAY : ' + df.loc[mask, 'RRN_FRONT'].astype(str) + '\n' +
    ' ' * 30 + '3. SSN : ' + df.loc[mask, 'RRN_BACK'].astype(str)
)

此方法利用Pandas的向量化字符串操作,处理10万行数据的速度远快于逐行apply,且能精准实现缩进格式。

3. 修正apply版本(适合小数据量场景)

如果坚持使用apply,需修正语法并添加缩进:

df.loc[df['EVENT_DTL'].isnull(), 'EVENT_DTL'] = df.apply(
    lambda x: (
        '1. Name : ' + str(x['NAME']) + '\n' +
        ' ' * 30 + '2. BIRTHDAY : ' + str(x['RRN_FRONT']) + '\n' +
        ' ' * 30 + '3. SSN : ' + str(x['RRN_BACK'])
    ),
    axis=1
)

4. 效果验证

执行后,JOHN对应的EVENT_DTL内容将与示例格式一致:

1. Name : JOHN 
                              2. BIRTHDAY : 891105 
                              3. SSN : 1067714

内容的提问来源于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 21:31:01