簡體   English   中英

從字典中提取信息 dataframe

[英]Extracting information from a dictionary within a dataframe

使用 Python 中的模塊facebook_scraper我想提取 Facebook 條帖子評論的文本,以對某個頁面進行情感分析。

使用內置的 function get_posts的以下用法,

from facebook_scraper import get_posts
import pandas as pd

for post in get_posts('PAGE_NAME', extra_info=True, pages=50, options={"comments": True}):
    post_entry = post
    fb_post_df = pd.DataFrame.from_dict(post_entry, orient='index')
    fb_post_df = fb_post_df.transpose()    
    post_df_full = post_df_full.append(fb_post_df)
    print(post['post_id']+' get')

可以將帖子信息抓取到 dataframe fb_post_df中,它看起來像這樣(只有相關列的壓縮版本,因為 function 返回包含 50 列的 df):

post_id 文本 ... comments_full
12345 '帖子正文' ... [{'comment_id': '12345', 'comment_url': 'https://facebook.com/12345', 'commenter_id': '12345', 'commenter_url': None, 'commenter_name': 'Jane Doe', ' commenter_meta':無, 'comment_text':'我需要這篇文章,評論的文本' ,'comment_time':2022-02-23 10:01:38,'comment_image':無,'comment_reactors':[],' comment_reactions':無,'comment_reaction_count':無,'回復':[]}]

comments_full 列的dtype是 object。

我試過使用 pandas 的from_dict來生成一個新的 dataframe 僅由評論文本組成,但它似乎無法將列的內容識別為字典——因為它是一個字典列表(如果這有意義的話)。

請注意,如果帖子沒有評論,該列可以為空,在這種情況下,該列的內容如下所示: []

列表理解應該可以解決問題:

post_df_full['comments_full'].apply(lambda x: [y['comment_text'] for y in x] if x else 'no comment')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM