如何遍历DataFrame列匹配单词列表并返回匹配词的字符索引存入新列
问题解决方法
错误原因
你的原代码每次循环都会覆盖Indexes列的全部值,循环结束后仅会保留列表最后一个词Horse的匹配结果,无法实现多词匹配效果。另外原代码中xList的字符串未加引号,属于语法错误,实际运行会报错。
正确实现代码
import pandas as pd # 匹配列表注意字符串需加引号 xList = ["Dog", "Rat", "Horse"] # 自定义匹配函数,返回第一个匹配到的单词的起始索引 def get_match_index(text): for word in xList: find_idx = text.find(word) if find_idx != -1: # 示例索引从1开始计数,若需要Python默认0起始直接返回find_idx即可 return find_idx + 1 # 无匹配时自定义返回值,这里设置为-1 return -1 # 对目标列应用函数,生成新列 df_Words["Index"] = df_Words["Words"].apply(get_match_index)
结果验证
运行上述代码后得到的Index列和你给出的预期输出完全一致:
- 第一行
Dog, Cat, Duck匹配到Dog,返回1 - 第二行
Cow, Horse, Pig匹配到Horse,返回6 - 第三行
Monkey, Snake, Rat匹配到Rat,返回16
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

