Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用if-else创建文档列表_Python_Python 3.x_Pandas_For Loop_If Statement - Fatal编程技术网

在python中使用if-else创建文档列表

在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

我有一个包含关键字、排名和文档列的数据集。对于每个关键字,都有排名为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['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]