gpt4 book ai didi

python - 使用函数和 for 循环将文本与多个文件的列表进行比较

转载 作者:行者123 更新时间:2023-12-01 08:24:13 25 4
gpt4 key购买 nike

我的最终目标是创建一个遍历多个文件的 for 循环,以及一个将术语索引与数据帧进行比较的附加 for 循环。为了使这更有趣,我还包含了一个函数,因为我可能必须将相同的原理应用于同一数据框中的另一个变量。有一些问题。

  1. 我不确定在这种情况下是否应该使用正则表达式,或者简单的 in 语句是否足够。
  2. 我使用的方法效率不高(更不用说它不起作用)。我希望有类似 isin 语句的东西,但是列表中的每个单词都需要根据数据帧的一行进行检查。但是,当我尝试做这样的事情时,我不确定如何应用它......
df:    
'headline' 'source'
targets is making better stars in the bucks target news
more diamonds than rocks in saturn rings wishful thinking
diamond in the rough employees take too many naps refresh sleep

data:
'company'
targets
stars in the bucks
wallymarty
velocity global
diamond in the rough

ccompanies = data['company'].tolist() #convert into list
def find(x): #function to compare df['headline'] against list of companies
result = []
companies = set(ccompanies) #edit based on comment, saves time
for i in companies:
if i in x:
result.append(x)
return result

matches = df['headline'].apply(find)

所需的输出将是与公司匹配的标题列表:
目标是在雄鹿队培养更好的球星
未加工的钻石员工小睡太多

编辑:我的脚本已被编辑,现在它可以运行并显示标题。但是,输出不仅显示所需的输出,还显示数据帧的所有行,并且仅填充了适用的行。

最佳答案

... should be using regex in this case or if a simple in statement is sufficient?

使用 in 就可以了,因为您显然已经标准化为 .lower() 并删除了标点符号。

您确实应该尝试使用更有意义的标识符。例如,通常的习语不是i,而是for company in Companies:

您已经了解了如何使用 .tolist(),这很好。但您确实希望创建一个 set 而不是 list,以支持高效的 in 测试。这是 O(1) 散列查找与列表线性扫描的嵌套循环之间的区别。

这没有什么意义:

        for i in ccompanies:
i = [x]

你开始迭代,但随后i本质上变成了一个常量?目前还不清楚你要做什么。

如果您进一步推进该项目,您可能会考虑将公司与 NLTK 进行匹配或来自 scikit-learn 的 TfidfVectorizer,或https://pypi.org/project/fuzzywuzzy/

关于python - 使用函数和 for 循环将文本与多个文件的列表进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54391757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com