如何使pandas从列表中的多个列表中获取值



我有一个包含多个html文件的文件夹。我希望代码遍历每个文件,并使用nlp选择主谓客体三元组。然后,我希望pandas在一个数据框架中的所有文件的主谓客体标题下列出所有这些文件。我面临的问题是,panda只列出了最后一个文件的主语动词宾语,而不是前两个文件。当我打印sub_verb_obj in循环时,它在一个列表中显示3个列表。但是熊猫不会选择3个列表的三胞胎。谁能告诉我我做错了什么?


sub_verb_obj=[]
folder_path = 'C:/Users/user3/.ipynb_checkpoints/xyz/xyz_2018'
for filename in glob.glob(os.path.join(folder_path, '*.html')):
with open(filename, 'r',encoding='utf-8') as f:
pat = f.read()

doc=nlp(text)
text_ext = textacy.extract.subject_verb_object_triples(doc)
sub_verb_obj=list(text_ext)

sao=pd.DataFrame(sub_verb_obj)
sao.columns=['subject','verb','object']
sao=sao.set_index('subject')
print(sao)```
how can I make sure the pandas lists all the subject verb object from all the files in a folder in a single dataframe?

因为您的数据看起来是每次迭代的元组列表,并且只运行一次,所以我建议每个循环构建一个数据框架,将其存储在列表中,然后连接数据框架列表

df_hold_list=[]
folder_path = 'C:/Users/user3/.ipynb_checkpoints/xyz/xyz_2018'
for filename in glob.glob(os.path.join(folder_path, '*.html')):
with open(filename, 'r',encoding='utf-8') as f:
pat = f.read()
soup = BeautifulSoup(pat, 'html.parser')
claim_section = soup.find_all('section', attrs={"itemprop":"claims"})
str_sect  =  claim_section[0]
claim_text=str_sect.get_text()
#print(str(type(claim_section))) 
clean_lower=claim_text.lower()
text=clean_lower
doc=nlp(text)
text_ext = textacy.extract.subject_verb_object_triples(doc)
sub_verb_obj=list(text_ext)
df_hold_list.append(pd.DataFrame(sub_verb_obj)) # add each new dataframe here
sao=pd.concat(df_hold_list, axis=0) # this should concat all dfs on top of one another using axis=0
sao.columns=['subject','verb','object'] # change your columns on teh final df
sao=sao.set_index('subject')
print(sao)

相关内容

  • 没有找到相关文章

最新更新