使用Python标准化Twitter API的JSON数据时遇字段缺失问题求助
解决Twitter API JSON数据标准化中缺失referenced_tweets字段的问题
当使用pd.json_normalize处理Twitter API返回的JSON数据时,部分推文因未引用其他内容而缺失referenced_tweets字段,会导致标准化后的DataFrame中该字段存在不一致情况。以下是两种实用的处理方案:
方案一:预处理JSON数据,统一字段存在性
先遍历所有推文,给缺失referenced_tweets的条目添加空列表,确保所有对象都包含该字段后再进行标准化:
import pandas as pd import json # 遍历每个推文,确保referenced_tweets字段存在 for tweet in json_response['data']: tweet.setdefault('referenced_tweets', []) # 执行标准化 df_test = pd.json_normalize(json_response, record_path='data', errors='ignore' )
这样处理后,所有行都会保留referenced_tweets字段,无引用的行对应值为空列表,后续可根据需求进一步展开该字段。
方案二:先标准化基础数据,再单独补充引用字段
先完成基础数据的标准化,再单独提取referenced_tweets信息并合并到DataFrame中:
import pandas as pd import json # 标准化基础数据 df_test = pd.json_normalize(json_response, record_path='data', errors='ignore' ) # 提取所有推文的referenced_tweets,缺失则用空列表填充 referenced_list = [tweet.get('referenced_tweets', []) for tweet in json_response['data']] # 将引用信息添加为DataFrame的新列 df_test['referenced_tweets'] = referenced_list
进阶:展开引用字段为单独列
如果需要将referenced_tweets中的id和type拆分为独立列,可以单独对引用字段进行标准化并合并:
# 标准化referenced_tweets字段,关联原推文id df_referenced = pd.json_normalize(json_response['data'], record_path=['referenced_tweets'], meta=['id'], errors='ignore' ) # 合并到原DataFrame,无引用的行对应字段为NaN df_test = df_test.merge(df_referenced, on='id', how='left')
内容的提问来源于stack exchange,提问作者PDS
相关产品推荐
相关产品推荐

