如何将包含嵌套对象的JSON转换为Pandas DataFrame并新增username列
解决将Twitter API返回的用户名加入推文DataFrame的方案
核心逻辑:Twitter API返回的includes.users数组存储了所有关联用户的元数据,其中用户id字段和推文data数组中的author_id字段一一对应,通过字段匹配即可将用户名关联到对应推文行。
方案1:字典映射(适合仅需添加少量用户字段的场景)
该方案代码简洁、运行效率高,无需处理列名冲突:
# 构建author_id到username的查询字典 user_id_to_username = {user["id"]: user["username"] for user in json_response["includes"]["users"]} # 直接为现有DataFrame新增username列 df["username"] = df["author_id"].map(user_id_to_username)
方案2:DataFrame合并(适合需要批量添加多个用户字段的场景)
如果后续还需要加入用户粉丝数、认证状态等更多用户维度字段,可以将用户数组也转为DataFrame后关联合并:
# 将用户元数据转为DataFrame users_df = pd.json_normalize(json_response["includes"]["users"]) # 关联推文数据和用户数据,左连接保证所有推文行都被保留 df = df.merge( # 可在下方列表中添加更多需要的用户字段,如"verified", "public_metrics.followers_count" users_df[["id", "username"]], left_on="author_id", right_on="id", how="left" ) # 处理合并后的重名列,避免和原有推文id字段混淆 df = df.drop(columns=["id_y"]).rename(columns={"id_x": "tweet_id"})
内容的提问来源于stack exchange,提问作者AneesBaqir
相关产品推荐
相关产品推荐

