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

Pandas如何处理DataFrame中的JSON列提取键值生成简单字典

解决方案

不需要提前固定属性键名,直接逐行遍历properties列的嵌套字典,提取每个属性对应的value字段即可,代码如下:

# 处理为字典格式的简化属性
df['properties'] = df['properties'].apply(
    lambda prop_map: {attr_name: attr_detail['value'] for attr_name, attr_detail in prop_map.items()}
)

如果需要和示例效果一致,存储为标准JSON字符串格式,追加json序列化步骤:

import json

df['properties'] = df['properties'].apply(
    lambda prop_map: json.dumps(
        {attr_name: attr_detail['value'] for attr_name, attr_detail in prop_map.items()},
        ensure_ascii=False
    )
)

逻辑说明

  • 代码通过字典推导式自动遍历每行properties字典的所有顶层键,不管属性名是动态生成的什么内容,都能自动适配
  • 仅提取每个属性嵌套结构中value字段的内容,自动丢弃timestamp、source、versions等不需要的元数据
  • 处理后输出结果和预期完全匹配:
id  isDeleted                                         properties
0   1      False                {"taxa": "1,49%", "num_associated": "1"}
1   2      False  {"num_associated": "1", "time_available": "12313", "createdate": "1612285284796"}

容错与扩展

  • 若存在部分属性缺失value字段的异常数据,可将attr_detail['value']替换为attr_detail.get('value'),避免触发KeyError,缺失值会自动填充为None
  • 若需要把提取出的属性直接展开为DataFrame的独立列,可使用如下代码:
# 提取简化属性后直接展开为多列
simplified_props = df['properties'].apply(
    lambda prop_map: {attr_name: attr_detail['value'] for attr_name, attr_detail in prop_map.items()}
)
df = df.join(pd.json_normalize(simplified_props)).drop(columns=['properties'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:54:40