You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas/Python遍历列表中的字典并适配BigQuery导入

解决嵌套字典列表的字段提取问题

针对你提到的需求,这里提供两种直接可行的Pandas方案,处理后生成的扁平结构可以直接导入BigQuery:

方案1:先拆分列表再提取目标字段(通用场景)

假设你的df1中tags字段的结构类似:

# 示例数据结构
df1 = pd.DataFrame({
    "id": [1, 2],
    "tags": [
        [{"group": "group1", "tag1": "v1", "tag2": "v2"}, {"group": "group2", "tag3": "v3"}],
        [{"group": "group3", "tag4": "v4"}]
    ]
})

执行以下步骤:

  1. 拆分列表为单行单个字典
# 将tags列表拆分为每行对应一个字典
df_exploded = df1.explode("tags", ignore_index=True)
  1. 提取group和字典keys
    直接从字典对象中提取所需字段,避免格式问题:
# 提取group字段(用get处理缺失key的情况,避免报错)
df_exploded["group"] = df_exploded["tags"].apply(lambda d: d.get("group", ""))
# 提取字典的所有keys并转为逗号分隔的字符串
df_exploded["tag_keys"] = df_exploded["tags"].apply(lambda d: ",".join(d.keys()))
  1. 清理并生成最终表
# 移除原tags字段,保留需要的扁平字段
final_df = df_exploded.drop("tags", axis=1)

方案2:展开字典为独立列(需保留所有key对应字段)

如果需要把每个字典的key都作为独立列导入BigQuery,可以用json_normalize完成:

# 拆分列表
df_exploded = df1.explode("tags", ignore_index=True)
# 展开嵌套字典为扁平列
df_normalized = pd.json_normalize(df_exploded["tags"])
# 合并原表其他字段(如id)与展开后的列
final_df = pd.concat([df_exploded.drop("tags", axis=1), df_normalized], axis=1)

这种方式会自动将字典的每个key转为列名,值对应填充,空值会用NaN表示,BigQuery可以正常识别。

注意事项

  • 如果字典中存在缺失的group键,用d.get("group", "")替代d["group"]避免KeyError
  • 若需要对tag_keys去重或排序,可在join前处理,比如"," .join(sorted(set(d.keys())))
  • 最终生成的final_df是完全扁平的结构,直接用final_df.to_gbq()即可导入BigQuery,无需额外格式转换

内容的提问来源于stack exchange,提问作者user2865459

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:45:38