Pandas中如何将str.startswith返回的布尔值替换为目标字符串
问题原因&解决方法
你写的代码存在两个核心错误:
replace方法未指定调用对象,必须对DataFrame/Series对象调用该方法才能生效,直接写replace(...)属于语法错误- Numpy不存在
np.True、np.False的常量定义,直接用Python原生布尔值True、False即可
方案1:修复原有写法
# 第一步生成布尔列 csv_file['job_url'] = csv_file['job_url'].str.startswith('https://neuvoo.ca/') # 第二步对布尔列执行替换 csv_file['job_url'] = csv_file['job_url'].replace({True: 'Canada', False: 'USA'})
方案2:更简洁的np.where写法(推荐)
一行即可完成匹配替换逻辑,效率更高:
import numpy as np csv_file['job_url'] = np.where( csv_file['job_url'].str.startswith('https://neuvoo.ca/'), 'Canada', 'USA' )
注意:如果你需要匹配没有末尾斜杠的
https://neuvoo.ca开头的链接,把str.startswith里的参数改成'https://neuvoo.ca'即可,避免漏匹配。
内容的提问来源于stack exchange,提问作者Henul
相关产品推荐
相关产品推荐

