在python中使用ifelse创建文档列表

2024-04-26 00:04:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集,其中包括关键字,排名和文件列。对于每个关键字,都有排名为1、2、3、4或5的文档。但是对于一些关键词,我缺少了一些排名。你知道吗

例如:对于关键字A,我的rank_organic=1、2、4、5,缺少3。我想创建一个长度为5的文档列表,对于rank_organic=3,null或空格应该出现,对于rest rank,文档应该出现。 下面是我正在使用的代码,但它给出了错误。请帮助我如何实现它。你知道吗

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

Tags: 文件数据文档data错误关键字关键词keyword
1条回答
网友
1楼 · 发布于 2024-04-26 00:04:12

我建议您对此使用列表或字典理解,并使用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]

相关问题 更多 >