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

Pandas如何查找DataFrame列匹配单词并获取其对应索引位置

实现方法

直接对DataFrame逐行应用列表推导式,调用Python列表原生的index()方法获取每个目标词的位置即可,代码简洁且可读性强:

import pandas as pd

# 原始数据构造
data = {'token_1': [['cat', 'run','today'],['dog', 'eat', 'meat']],
        'token_2': [[ 'in', 'the' , 'morning','cat', 'run', 'today',
                      'very', 'quick'],['dog', 'eat', 'meat', 'chicken', 'from', 'bowl']]}
df = pd.DataFrame(data)

# 逐行计算匹配索引,直接得到目标嵌套列表
lst_indexes = df.apply(
    lambda row: [row['token_2'].index(word) for word in row['token_1']],
    axis=1
).tolist()

运行后lst_indexes的输出和预期完全一致:

[[3, 4, 5], [0, 1, 2]]

注意事项

  • 该写法默认token_1中的所有单词,在对应行的token_2列表中一定存在。如果存在匹配不到的单词,list.index()会抛出ValueError,这类场景可以在列表推导式中增加存在性判断,自定义匹配失败时的返回值。
  • 如果token_2列表中存在重复的目标单词,index()默认返回该单词第一次出现的索引,符合当前示例的需求。
  • 该方法在万级以内的数据量下性能足够,如果是超大规模数据集,可以考虑预先把每行token_2处理成「单词:索引」的映射字典,减少重复遍历的开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:51:46