我从熊猫数据框中读取了信息。 “关键字”列可以但不必包含逗号分隔的关键字,以后我要在文本中搜索这些关键字。如果我只有一个关键字列表,可以对其进行迭代然后在文本中进行查找,则这一部分很容易。但是,我需要为每一行提供一个列表。我该怎么办?
输入是以下数据框(df):
Search keywords
1 Smurf, gummybear, Echo
2 Blue, yellow, red
3 Apple, Orange, Pear
l_search = df['search'].tolist()
l_kw = df['keywords'].tolist()
现在,我有了一个关键字列表列表。我想将其分为我搜索到的尽可能多的列表,基本上是:
i = 1
for s in l_search:
l_kw_i = [] # here the list would be l_kw_1, then l_kw_2, ...
l_kw_i.append(s)
i = i+1
# l_kw_1 would be now "Smurf, gummybear, Echo".
在那之后,我想用逗号分割每个列表,因此l_kw_1现在将包含“ Smurf”,“ gummybear”,“ Echo”。然后,我将遍历每次搜索的结果以及相应的列表,以确定是否出现至少一个关键字。
主要问题是根据搜索数量创建可变数量的关键字列表。
答案 0 :(得分:0)
诀窍是使用词典。您可以结合使用字典理解和列表理解来在一行中做到这一点:
df = pd.DataFrame({'Search':[1,2,3],
'keywords' : ["Smurf, gummybear, Echo", "Blue, yellow, red", "Apple, Orange, Pear"] })
l_kw = {i:[y for y in x['keywords'].split(',')] for i, x in df.iterrows()}
输出:
{0: ['Smurf', ' gummybear', ' Echo'],
1: ['Blue', ' yellow', ' red'],
2: ['Apple', ' Orange', ' Pear']}