Python Pandas如何基于部分匹配替换DataFrame列中的指定字符串
解决方案
你已经完成了列内容转小写、去首尾空格、移除前缀的清洗操作,只需要一行代码即可完成所有含real字段的内容替换:
# 写法1:用where实现 df['Occupation'] = df['Occupation'].where(~df['Occupation'].str.contains('real', na=False), 'realestate') # 写法2:用loc索引赋值实现(更直观) df.loc[df['Occupation'].str.contains('real', na=False), 'Occupation'] = 'realestate'
代码说明
str.contains('real', na=False)会匹配所有包含real子串的单元格,na=False用于处理空值,避免空值抛出报错,空值会被判定为不匹配,保留原值- 两种写法都是一次性覆盖所有含
real的内容,不需要写几十条替换规则,单次运行即可全部替换完成
之前需要多次运行才生效的原因
你之前的批量替换规则,有一部分写在转小写、去空格、移除前缀的清洗操作之前,大小写差异、前缀、首尾空格的存在会导致很多匹配项第一次没有命中,后续清洗操作完成后再次运行替换才能命中剩余内容,所以需要重复运行多次才能覆盖全部匹配项。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

