如何将DataFrame提取的修正值原地应用至对应列?
修复DataFrame中name列异常值的原地替换方案
先把你提取到的修正值存为变量,建议同时去除结果里可能存在的前后空格:
names = ['a', 'an', 'my', 'by', 'mad', 'very', 'just', 'quite', 'one', 'actually', 'life', 'light', 'officially','his', 'old', 'this', 'all','the'] # 提取修正值并处理空格 corrected_names = ( archive[archive['name'].isin(names) & archive['text'].str.contains('named')] ['text'] .str.split('named').str[1] .str.split('.').str[0] .str.strip() )
接着用.loc精准定位原DataFrame中需要修改的行,直接替换name列的值:
archive.loc[corrected_names.index, 'name'] = corrected_names
关键说明
- 因为
corrected_names的索引和原DataFrame中需要修复的行索引完全对应,.loc可以安全地把修正值映射到正确的位置,实现原地修改。 str.strip()用于清理提取过程中可能带有的前后空白字符,避免替换后出现无效空格。
验证替换效果
可以用下面的代码确认修改是否成功:
# 查看原异常行的name列当前值 print(archive.loc[corrected_names.index, 'name'])
内容的提问来源于stack exchange,提问作者Amazing-Grace Umoren
相关产品推荐
相关产品推荐

