gpt4 book ai didi

python - Pandas .at 不工作并且数据框没有改变

转载 作者:太空宇宙 更新时间:2023-11-03 21:29:47 25 4
gpt4 key购买 nike

有一个很大的DataFrame文本,我想首先在它上面训练和LDA模型。所以我这样做:

doc_clean = df['tweet_tokenized'].tolist()
dictionary = corpora.Dictionary(doc_clean)
doc_term_matrix = [dictionary.doc2bow(doc) for doc in doc_clean]
lda = LdaMulticore(doc_term_matrix, id2word=dictionary, num_topics=50)

现在我已经训练了 lda,我想逐行迭代 throw df 并将属于给定主题的每一行的概率放入其相应的列。因此,首先我创建 50 列零:

for i in range(50):
col_name = 'tweet_topic_'+str(i)
df[col_name] = 0

然后,我使用 iterrows() 迭代行,并使用 at 方法更新值:

for row_index, row in df.iterrows():
new_doc = dictionary.doc2bow(row['tweet_tokenized'])
lda_result = lda[new_doc]
for topic in lda_result:
col_name = 'tweet_topic_'+(str(topic[0]))
df.at[row_index,col_name] = topic[1]

但它无法正常工作,并且以上 50 列的值没有改变并保持为零。

知道我应该如何解决这个问题吗?

更新:我添加了 row = row.copy() 并将 at 替换为 loc,现在效果很好。

所以这是工作代码:

for row_index, row in df.iterrows():
row = row.copy()
new_doc = dictionary.doc2bow(row['tweet_tokenized'])
lda_result = lda[new_doc]
for topic in lda_result:
col_name = 'tweet_topic_'+(str(topic[0]))
df.loc[row_index,col_name] = topic[1]

最佳答案

使用以下帖子中的说明,我能够解决它:

Updating value in iterrow for pandas

for row_index, row in df.iterrows():
row = row.copy()
new_doc = dictionary.doc2bow(row['tweet_tokenized'])
lda_result = lda[new_doc]
for topic in lda_result:
col_name = 'tweet_topic_'+(str(topic[0]))
df.loc[row_index,col_name] = topic[1]

关于python - Pandas .at 不工作并且数据框没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53599629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com