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

Pandas如何删除DataFrame中非英文内容的行

代码修正方案

原代码问题根源

  • 原代码中str(df['review'])是将整个review列的Series对象整体转为字符串,仅会触发1次语言检测,结果直接赋值给所有行的detect列,才会出现所有行都被标记为英文的错误
  • 循环删除阶段传入df.drop()的参数是检测得到的语言编码,不是待删除行的索引,完全无法匹配到要删除的行,且遍历过程中修改原DataFrame极易引发索引错乱

修正后可直接运行的代码

import pandas as pd
from langdetect import detect, LangDetectException

# 样例数据构造,你可以替换成自己的df读取逻辑
data = {"review": ["de la nada mi ya no se escucha", "I tried to set it up", "It is a good product"]}
df = pd.DataFrame(data)

# 定义单行语言检测函数,加异常处理避免无意义文本引发报错
def detect_lang(text):
    try:
        return detect(text)
    except LangDetectException:
        return "other"

# 对每行review单独执行语言检测
df["detect"] = df["review"].apply(detect_lang)

# 直接用布尔索引筛选保留英文行,无需循环删除
df_en = df[df["detect"] == "en"].copy()

运行后df_en就是仅保留英文内容的DataFrame,你可以根据需求选择是否删除中间生成的detect列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:48:00