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

如何在Python中根据字符串长度将DataFrame列值置为空

问题描述

需要实现:当DataFrame中某列的字符串长度小于3时,将对应值替换为空字符串。示例如下:

WordsLenExpected OutPut
TN27E83759TN27E8375
-1
DP - 207369812DP - 2073698
0
New3New
*52
解决方案

可以用Pandas的字符串方法结合条件判断实现,以下是几种常用方法:

方法1:使用str.len() + mask()

mask()会将满足条件的值替换为指定内容,这里把长度<3的字符串替换为空:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'Words': ['TN27E8375', '-', 'DP - 2073698', '', 'New', '*5'],
    'Len': [9, 1, 12, 0, 3, 2]
})

# 执行替换
df['Expected OutPut'] = df['Words'].mask(df['Words'].str.len() < 3, '')

方法2:使用np.where()

通过numpy的where函数做条件分支替换,逻辑更直观:

import pandas as pd
import numpy as np

df['Expected OutPut'] = np.where(df['Words'].str.len() >= 3, df['Words'], '')

处理NaN值场景

如果原数据存在NaN(而非空字符串),需先填充空值再判断,避免报错:

# 先把NaN转为空字符串,再执行替换
df['Expected OutPut'] = df['Words'].fillna('').mask(df['Words'].fillna('').str.len() < 3, '')

说明

  • str.len()会计算每个字符串的长度,空字符串长度为0,会被判定为需要替换
  • 条件str.len() < 3匹配长度为0、1、2的字符串,统一替换为空
  • 长度等于3的字符串(如示例中的"New")会被保留

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:15:35