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

如何去除DataFrame单行内的重复Token?

问题

我有一个用于情感分析的DataFrame,stemmed列包含分词后的token列表,原始数据如下:

stemmed
['min', 'tol', 'cilegon', 'serang', 'minim', 'lampu', 'terang', 'jalan', 'bayar', 'tol', 'mahal', 'emang', 'bayar', 'tol', 'doang', 'tah', 'tidak', 'plus', 'terang', 'jalan', 'tidak', 'lubang']
['moga', 'selesai', 'guna', 'jalan', 'tol', 'nyaman', 'lancar', 'jalan']

需要移除每行列表中的重复token,处理后目标结果如下:

stemmed
['min', 'tol', 'cilegon', 'serang', 'minim', 'lampu', 'terang', 'jalan', 'bayar', 'mahal', 'emang', 'doang', 'tah', 'tidak', 'plus', 'lubang']
['moga', 'selesai', 'guna', 'jalan', 'tol', 'nyaman', 'lancar']
解决方案

使用pandas结合自定义去重函数,既能移除重复token,又能保留元素首次出现的顺序:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'stemmed': [
        ['min', 'tol', 'cilegon', 'serang', 'minim', 'lampu', 'terang', 'jalan', 'bayar', 'tol', 'mahal', 'emang', 'bayar', 'tol', 'doang', 'tah', 'tidak', 'plus', 'terang', 'jalan', 'tidak', 'lubang'],
        ['moga', 'selesai', 'guna', 'jalan', 'tol', 'nyaman', 'lancar', 'jalan']
    ]
})

# 自定义去重函数,维持元素顺序
def dedupe_tokens(tokens):
    seen = set()
    result = []
    for token in tokens:
        if token not in seen:
            seen.add(token)
            result.append(token)
    return result

# 应用到stemmed列
df['stemmed'] = df['stemmed'].apply(dedupe_tokens)

# 输出结果
print(df)

说明

  • 自定义函数dedupe_tokens通过集合seen追踪已出现的token,遍历列表时仅保留首次出现的元素,确保原顺序不变。
  • 使用apply()方法将函数批量作用于stemmed列的每一行数据。

运行代码后,即可得到目标中的去重结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:09:57