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

如何使用Pandas比较DataFrame中tokenizing与lemmatization列是否一致

问题原因

你当前check列全为False的核心原因是tokenizing列存储的是spaCy的Token对象列表,而lemmatization列存储的是字符串列表,两类对象即使打印内容看起来一致,实际判定相等时也会返回False。

修复方案

修改分词函数返回分词的文本内容而非Token对象,保证两列数据类型统一后直接比较即可:

from spacy.lang.id import Indonesian
import pandas as pd

nlp = Indonesian()
nlp.add_pipe('lemmatizer')
nlp.initialize()

data = [
    'pergi untuk melakukan penanganan banjir',
    'baca buku itu asik'
]

df = pd.DataFrame({'text': data})

# 分词函数返回token的文本内容,存储为字符串列表
def tokenizer(words):
    return [token.text for token in nlp(words)]

# 词形还原函数直接处理原始文本,避免类型转换问题
def lemmatizer(text):
    return [token.lemma_ for token in nlp(text)]

df['tokenizing'] = df['text'].apply(tokenizer)
df['lemmatization'] = df['text'].apply(lemmatizer)

# 两列都是字符串列表,可直接用eq比较
df['check'] = df['tokenizing'].eq(df['lemmatization'])
print(df)

运行后输出的check列会完全符合预期:第一条返回False、第二条返回True。

补充说明:你原来代码里的df.to_clipboard(sep='\s\s+')写法有误,to_clipboard的sep参数不支持正则表达式,需要多空格分隔直接传sep=' '即可,该问题不影响check列的计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:36:03