在while循环中陷入if语句中。我如何退出?

时间:2019-07-26 08:53:40

标签: python-3.x if-statement while-loop

我编写了以下代码,根据所满足的条件迭代地构建矩阵。但是我被困在第二个if语句中。由于某种原因,它不会移动到其他位置,并且会无限重复地打印我的打印语句的内容。

B=np.empty([u,v])               
for i in range(u):
    for j in range(v):
        B[i][j]=0  

vi= df['GroupId'][0]
G_df= pd.DataFrame(index=np.arange(0, v), columns=['j', 'vi']) 
G_df['j'][0] = 0
G_df['vi'][0] = 0
j=0
i=0
old_tweet_id=1
new_tweet_id=1
value= df['TFIDF_score'][0]

while i<u:
    old_tweet_id=new_tweet_id
    while (old_tweet_id == new_tweet_id):
        if j < v:
            new_js= [G_df.loc[G_df['vi'] == vi, 'j'].item()] 
            if new_js != 0:
                print('new_js',new_js)
                new_j= int(''.join(str(x) for x in new_js))
                print('new_j', new_j)
                B[i][new_j] = value         
                print('matrix', B)                
            else: 
                G_df.loc[-1]=[j,vi]
                B[i][j]=value
                vi = vi +1
                j=j+1
            if j>=v:
                old_tweet_id =  u +10
            else:
                cc = df['tweet_id'][j:j + 1]
                dd = df['TFIDF_score'][j:j + 1]
                value = dd[j]
                new_tweet_id = cc[j]

    i = i + 1

我尝试使用break并尝试在else行之前清空new_js和new_j变量,但这也不起作用。 我确定我缺少了一些东西,但是我无法将手指放在上面。

编辑: 我正在尝试从几列的数据帧构建矩阵,其中一个数据帧列包含我将用于矩阵列标签的内容,并且其中一些重复,因此我使用df.groupy对重叠的条目进行分组,并给它们分配一个索引,以便所有相似的条目都具有相同的索引值。这些索引值存储在另一个名为GroupId的数据框列中。因此,在构建矩阵时,矩阵本身的值为df [TFIDF分数],并将根据它们所属的列和行将其输入到矩阵中。我的问题出在哪里,是在检查是否遇到了列标签并且当前遇到的是重叠时,因此我们需要使用列标签的第一次出现,而不是为其创建新列。我创建了一个新的数据框(G_df),在其中添加了遇到的所有列标签,并在其中比较了当前列标签以查看是否存在现有的列标签。

我知道很多,但是我已经尽力了。我在这个问题上困扰了很长时间。

0 个答案:

没有答案