2 回答
TA贡献1802条经验 获得超10个赞
因此,正如您所提到的,使用集合绝对是这里的方法。这是因为集合中的查找比列表中的查找要快得多。如果您想知道原因,请在 google 上快速搜索散列。进行此更改所需要做的就是将 word_list 中的方括号更改为花括号。
您需要处理的真正问题是“标题是多个单词的字符串,而 word_list 是单个单词”
您需要做的是遍历许多单词。我假设 header_col 是标题列表,其中标题是包含一个或多个单词的字符串。我们将遍历所有标题,然后遍历标题中的每个单词。
word_list = {"Slam", "Slams", "Slammed", "Slamming", "Blast", "Blasts", "Blasting", "Blasted"}
# Iterate over each headline
for headline in headline_col:
# Iterate over each word in headline
# Headline.split will break the headline into a list of words (breaks on whitespace)
for word in headline.split():
# if we've found our word
if word in word_list:
# add the word to our list
slam_list.append(headline)
# we're done with this headline, so break from the inner for loop
break
TA贡献1827条经验 获得超4个赞
pandas在这里,由于您正在阅读 csv,因此使用它来实现您的目标可能会更容易。
你想要做的是通过它的索引来识别列,看起来它是 2。然后你找到第三列的值在word_list.
import pandas as pd
df = pd.read_csv("website_headlines.csv")
col = df.columns[2]
df.loc[df[col].isin(word_list), col]
考虑以下示例
import numpy as np
import pandas as pd
word_list = ["Slam", "Slams", "Slammed", "Slamming",
"Blast", "Blasts", "Blasting", "Blasted"]
# add some extra characters to see if limited to exact matches
word_list_mutated = np.random.choice(word_list + [item + '_extra' for item in word_list], 10)
data = {'a': range(1, 11), 'b': range(1, 11), 'c': word_list_mutated}
df = pd.DataFrame(data)
col = df.columns[2]
>>>df.loc[df[col].isin(word_list), col]
a b c
0 1 1 Slams
1 2 2 Slams
2 3 3 Blasted_extra
3 4 4 Blasts
4 5 5 Slams_extra
5 6 6 Slamming_extra
6 7 7 Slam
7 8 8 Slams_extra
8 9 9 Slam
9 10 10 Blasting
添加回答
举报