我有这些数据(数据是在R中生成的(,我使用reticulate
包移植到Python。问题出在我的Python代码上。
R 代码 :
text <- c("Because I could not stop for Death -",
"He kindly stopped for me -",
"The Carriage held but just Ourselves -",
"and Immortality")
ID <- c(1,2,3,4)
df <- data.frame(cbind(ID, text))
library(reticulate)
df_py <- r_to_py(df)
repl_python()
蟒蛇代码:
import gensim
LabeledSentence1 = gensim.models.doc2vec.TaggedDocument
all_content_data = []
j = 0
for em in r.df_py['text'].values:
all_content_data.append(LabeledSentence1(em,[j]))
j+=1
print('Number of texts processed: ', j)
注意:r.df_py['text']
是一个调用R数据的"特殊"函数,如果只使用Python,可以更改为df_py['text']
。
数据应该处理文档,但是当我打印时,它说Number of texts processed: 1
什么时候应该说Number of texts processed: 4
。我只是不知道我在那个功能中哪里出了问题。我的数据是一个数据框,在每一行中,我都有一本唯一的"书",该书的所有文本都在一个单元格中,我想处理该单元格。
您的j += 1
在循环之外,因此无法递增。因此,它保持在 1。把它放在 for 循环的缩进中:
for em in r.df_py['text'].values:
all_content_data.append(LabeledSentence1(em,[j]))
j+=1
您的增量语句根本没有正确缩进,因此它在循环之外这是它应该的方式:
for em in r.df_py['text'].values:
all_content_data.append(LabeledSentence1(em,[j]))
j+=1
当第一次从Java切换到python时,我犯了很多错误,所以不要感到孤独:)