【发布时间】:2018-11-25 23:09:08
【问题描述】:
我正在使用 SpaCy 和 Pandas 来获得一个用词性 (POS) 导出标记化的句子以 excel。代码如下:
import spacy
import xlsxwriter
import pandas as pd
nlp = spacy.load('en_core_web_sm')
text ="""He is a good boy."""
doc = nlp(text)
for token in doc:
x=[token.text, token.lemma_, token.pos_, token.tag_,token.dep_,token.shape_, token.is_alpha, token.is_stop]
print(x)
当我print(x)我得到以下信息:
['He', '-PRON-', 'PRON', 'PRP', 'nsubj', 'Xx', True, False]
['is', 'be', 'VERB', 'VBZ', 'ROOT', 'xx', True, True]
['a', 'a', 'DET', 'DT', 'det', 'x', True, True]
['good', 'good', 'ADJ', 'JJ', 'amod', 'xxxx', True, False]
['boy', 'boy', 'NOUN', 'NN', 'attr', 'xxx', True, False]
['.', '.', 'PUNCT', '.', 'punct', '.', False, False]
在令牌循环中,我添加了 DataFrame,如下所示: 文档中的令牌:
for token in doc:
x=[token.text, token.lemma_, token.pos_, token.tag_,token.dep_,token.shape_, token.is_alpha, token.is_stop]
df=pd.Dataframe(x)
print(df)
现在,我统计得到以下格式:
0
0 He
1 -PRON-
2 PRON
3 PRP
4 nsubj
5 Xx
6 True
7 False
........
........
但是,当我尝试使用 Pandas 将输出 (df) 导出到 excel 作为以下代码时,它只显示列中 x 的最后一次迭代
df=pd.DataFrame(x)
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')
df.to_excel(writer,sheet_name='Sheet1')
输出(在 Excel 表中):
0
0 .
1 .
2 PUNCT
3 .
4 punct
5 .
6 False
7 False
在这种情况下,如何在新列中一个接一个地进行所有迭代,如下所示?
0 He is ….
1 -PRON- be ….
2 PRON VERB ….
3 PRP VBZ ….
4 nsubj ROOT ….
5 Xx xx ….
6 True True ….
7 False True ….
【问题讨论】:
-
数据框的转置会更有意义。
-
使用 df.append() 逐行添加
-
@EvgenyPogrebnyak,怎么样?你能告诉我如何使用 df.append 更改它吗?
-
尝试通过pandas.pydata.org/pandas-docs/stable/10min.html#object-creation,没有什么大的困难,如果没有成功就回信。由于缺少编译器,我在安装
SpaCy时遇到问题,因此无法为您提供快速准备好的代码。
标签: pandas xlsxwriter spacy