如何编辑Pandas DataFrame移除小写开头单词保留大写开头单词?
解决Indeed爬取数据中职位头衔的冗余清洗问题
问题分析
你之前的尝试存在两个核心问题:
str.replace(r'^[a-z]', ' ')仅匹配开头单个小写字母,只能替换掉第一个字符,无法处理开头一串小写单词的冗余内容,所以没有效果。df[df.Title.str[0].str.isupper()]是筛选开头首字母大写的行,但你的数据所有头衔开头都是小写冗余内容,导致全量行被删除——这是筛选行而非修改字段内容,方向完全错误。
正确解决方法
方法1:正则提取有效内容
用str.extract直接提取从第一个大写字母开始到结尾的所有内容,正则表达式([A-Z].*)会匹配第一个大写字母及后续所有字符:
df['Cleaned_Title'] = df['Title'].str.extract(r'([A-Z].*)')
方法2:正则替换冗余前缀
用str.replace替换开头所有小写字母、空格、连字符等冗余内容,正则表达式^[a-z\s-]+匹配开头连续的小写字母、空格或连字符,替换为空字符串:
df['Cleaned_Title'] = df['Title'].str.replace(r'^[a-z\s-]+', '', regex=True)
测试示例
import pandas as pd # 模拟你的爬取数据 df = pd.DataFrame({ 'Title': [ 'active visited hover focus focus-visible after Business Analyst, Commercial Systems', 'link hover before Data Scientist', 'nav-item active Senior Software Engineer' ] }) # 应用方法2清洗字段 df['Cleaned_Title'] = df['Title'].str.replace(r'^[a-z\s-]+', '', regex=True) print(df[['Title', 'Cleaned_Title']])
输出结果:
Title Cleaned_Title 0 active visited hover focus focus-visible after Business Analy... Business Analyst, Commercial Systems 1 link hover before Data Scientist Data Scientist 2 nav-item active Senior Software Engineer Senior Software Engineer
内容的提问来源于stack exchange,提问作者arch200
相关产品推荐
相关产品推荐

