[英]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.