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

Pandas apply调用自定义函数判断英文单词结果异常排查

错误点说明
  • apply调用逻辑错误
    df.apply(lambda x: is_english_word(df['words']), axis=1)中,axis=1参数下lambda的入参x代表当前遍历到的行数据,你错误传入了完整的df['words']列,导致每次判断都传入了整列数据,无法得到每行的单独校验结果。
  • 词库初始化逻辑冗余
    你将英文词典的生成逻辑放在了判断函数内部,每次调用函数都会重复加载nltk词库生成字典,执行效率极低,属于完全不必要的重复操作。
修正方案

步骤1:全局初始化英文词典(仅执行一次)

使用set存储词库比用字典更节省资源,存在性判断效率也更高:

from nltk.corpus import words as nltk_words
import pandas as pd

# 全局仅加载一次词库
english_word_set = set(nltk_words.words())

步骤2:简化判断函数

def is_english_word(word):
    # 若需要兼容大小写匹配,可改为 return word.lower() in english_word_set
    return word in english_word_set

步骤3:正确调用apply生成新列

直接对words列调用apply即可,不需要遍历整行,写法更简洁:

df['is_english'] = df['words'].apply(is_english_word)

如果需要沿用遍历整行的写法,正确代码为:

df['is_english'] = df.apply(lambda x: is_english_word(x['words']), axis=1)

运行效果

用你提供的示例数据运行后,输出结果和预期完全一致:

words  is_english
0    cat        True
1    dog        True
2   mark        True
3  lillly       False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:36:03