Pandas实现DataFrame指定列含特定字符串时替换整格内容
实现方案
直接用pandas自带的字符串匹配+定位赋值即可完成需求,代码如下:
# 匹配rank列包含foo的行,将对应rank值统一替换为foo df.loc[df['rank'].str.contains('foo', na=False), 'rank'] = 'foo'
代码说明
df['rank'].str.contains('foo')会逐行扫描rank列的字符串内容,判断是否包含子串foo,返回由True/False组成的布尔序列- 参数
na=False用于兼容列中存在空值的场景,空值会被判定为不匹配、保留原值,避免运行报错 - 用
loc做行列定位赋值是pandas官方推荐的写法,不会触发链式赋值警告,运行更稳定
效果验证
执行上述代码后,DataFrame输出和预期完全一致:
name rank 0 A captain, general, soldier 1 B foo 2 C foo 3 D captain, major 4 E foo
内容的提问来源于stack exchange,提问作者Yantra Logistics
相关产品推荐
相关产品推荐

