You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从DataFrame字符串中移除指定词汇但保留全由该词汇组成的行

解决方案

修正后的代码

import pandas as pd

# 原数据
data = {'strings_variable': ['Avalon Toyota loan', 'Blazer Chevrolet', 'Suzuki Vitara sales', 'Vauxhall Astra', 'Buick Special car', 'Ford Aerostar', 'car refund', 'car loan']}
df = pd.DataFrame(data)
# 待移除词汇集合(转集合提升查找效率)
words_to_remove = {'car','sales','loan','refund'}

def process_string(s):
    words = s.split()
    # 若整行所有单词都属于待移除词汇,直接保留原字符串
    if all(word in words_to_remove for word in words):
        return s
    # 过滤掉待移除词汇后拼接成新字符串
    filtered_words = [word for word in words if word not in words_to_remove]
    return ' '.join(filtered_words)

# 应用处理函数到目标列
df['strings_variable'] = df['strings_variable'].apply(process_string)
print(df)

代码说明

  1. 词汇集合转换:将words_to_remove转为集合,相比元组,集合的成员查找操作效率更高,适合处理大量数据场景。
  2. 字符串处理逻辑:
    • 先将单个字符串拆分为单词列表;
    • 用all()判断当前字符串的所有单词是否都属于待移除词汇,若是则直接返回原字符串(满足保留全移除词汇行的需求);
    • 若不是,则过滤掉属于待移除词汇的单词,再将剩余单词拼接为新字符串。
  3. Pandas列处理:通过apply()方法将处理函数批量应用到strings_variable列的每个元素上,完成整列数据的更新。

原代码问题分析

  • 未对字符串进行拆分,直接遍历DataFrame对象,逻辑混乱;
  • 缺少对「整行全由待移除词汇构成」的判断逻辑,无法保留这类行;
  • 列表推导式的遍历语法错误,[word for words in df if word not in words_to_remove]没有正确处理每个字符串的单词拆分。

内容的提问来源于stack exchange,提问作者RoyalPotatoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:10:05