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),在其中添加了遇到的所有列标签,并在其中比较了当前列标签以查看是否存在现有的列标签。
我知道很多,但是我已经尽力了。我在这个问题上困扰了很长时间。