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

如何定义类让函数适配progress_apply(),实现DataFrame非英文文本检测?

问题解决方案

错误原因

  • 实例方法调用错误:detect是类的实例方法,必须先创建detector类的实例才能调用。你直接传递detector.detect给progress_apply时,遍历得到的行/列数据会被当成self参数传入方法,导致需要的input参数缺失。另外你代码里的self=self是无效语句,没有任何实际作用。
  • 遍历轴参数设置错误:你需要逐行判断当前行所有列是否存在非英文文本,应该设置axis=1,axis=0是逐列遍历,不符合你的需求。

最简实现方案

不需要额外封装类,直接定义普通函数即可,代码如下:

# 先初始化tqdm的progress_apply功能
from tqdm import tqdm
tqdm.pandas()

from deep_translator import batch_detection

# 自定义逐行检测函数
def check_non_en(row):
    # 将当前行所有文本值转成列表传入批量检测接口
    detect_res = batch_detection(row.tolist(), api_key=my_key)
    # 存在任意非英文返回1,全英文返回0
    return 1 if any(lang != 'en' for lang in detect_res) else 0

# 按行遍历执行检测,展示进度
df['non_en'] = df.progress_apply(check_non_en, axis=1)

如果你要保留原来的类写法,只需要先实例化类再调用方法即可,修改代码如下:

det = detector()
df['non_en'] = df.progress_apply(det.detect, axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:09:02