在python中使用if-else创建文档列表
我有一个包含关键字、排名和文档列的数据集。对于每个关键字,都有排名为1、2、3、4或5的文档。但是对于一些关键词,我缺少了一些排名 例如:对于关键字A,我有秩_organic=1,2,4,5,缺少3。我想创建一个长度为5的文档列表,其中对于秩_organic=3,null或空格应该出现,对于rest秩,文档应该出现。 下面是我正在使用的代码,但它给出了错误。请帮助我如何实现它在python中使用if-else创建文档列表,python,python-3.x,pandas,for-loop,if-statement,Python,Python 3.x,Pandas,For Loop,If Statement,我有一个包含关键字、排名和文档列的数据集。对于每个关键字,都有排名为1、2、3、4或5的文档。但是对于一些关键词,我缺少了一些排名 例如:对于关键字A,我有秩_organic=1,2,4,5,缺少3。我想创建一个长度为5的文档列表,其中对于秩_organic=3,null或空格应该出现,对于rest秩,文档应该出现。 下面是我正在使用的代码,但它给出了错误。请帮助我如何实现它 def key_doc(data): lis=[] for i in pd.unique(data['k
def key_doc(data):
lis=[]
for i in pd.unique(data['keyword']):
a = data.loc[data['keyword'].isin([i])]
j = i.replace(" ","_")
j = Node(i, parent= Testing,
documents=[(a.loc[(a['rank_organic']==1)])['vocab'].tolist()[0]
,(a.loc[(a['rank_organic']==2)])['vocab'].tolist()[0]
,(a.loc[(a['rank_organic']==3)])['vocab'].tolist()[0]
,(a.loc[(a['rank_organic']==4)])['vocab'].tolist()[0]
,(a.loc[(a['rank_organic']==5)])['vocab'].tolist()[0]])
# print j.name, len(j.documents)
lis.append(j)
return lis
错误:
,(a.loc[(a['rank_organic']==3)])['vocab'].tolist()[0]
IndexError: list index out of range
我建议您对此使用列表或字典理解,并使用
next
检索第一个元素next
还有一个可选参数,如果没有要提取的元素,我们将其定义为[]
(空列表)
docs = [next(iter(a.loc[a['rank_organic'] == i, 'vocab'].tolist()), []) \
for i in range(1, 6)]
然后将docs
作为类实例参数馈送
下面是next(iter(lst),…)
方法工作原理的一个简单示例:-
lst = [[1, 2, 3], [4], [], [3, 5]]
res = [next(iter(i), []) for i in lst]
# [1, 4, [], 3]