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

如何高效将Pandas DataFrame转为指定字典列表并保存为JSON文件

Pandas DataFrame转指定字典列表并保存JSON的高效方法

原始DataFrame

device_id   user_id level
d_id1       u_id1   1
d_id1       u_id2   -1
d_id1       u_id3   1
d_id2       u_id100 -1
d_id3       u_id100 1
d_id3       u_id4   1

目标格式(字典列表)

[
  {
    "device_id": "d_id1",
    "result_key": [
      {"user_id": "u_id1", "level": 1},
      {"user_id": "u_id2", "level": -1},
      {"user_id": "u_id3", "level": 1}
    ]
  },
  {
    "device_id": "d_id2",
    "result_key": [{"user_id": "u_id100", "level": -1}]
  },
  {
    "device_id": "d_id3",
    "result_key": [
      {"user_id": "u_id100", "level": 1},
      {"user_id": "u_id4", "level": 1}
    ]
  }
]

高效实现方法

直接利用Pandas内置的分组和字典转换能力,避免手动循环,在数据量较大时优势明显:

  1. 导入依赖库
import pandas as pd
import json
  1. 加载/构造DataFrame
    如果是已有数据,直接加载即可;示例中构造测试数据:
df = pd.DataFrame({
    'device_id': ['d_id1', 'd_id1', 'd_id1', 'd_id2', 'd_id3', 'd_id3'],
    'user_id': ['u_id1', 'u_id2', 'u_id3', 'u_id100', 'u_id100', 'u_id4'],
    'level': [1, -1, 1, -1, 1, 1]
})
  1. 分组转换为目标结构
    按device_id分组,将每组的user_id和level转为字典列表,最终整合成目标格式的字典列表:
result = (
    df.groupby('device_id')
      .apply(lambda x: x[['user_id', 'level']].to_dict('records'))
      .reset_index(name='result_key')
      .to_dict('records')
)
  1. 保存为JSON文件
    用json.dump写入文件,indent参数可让JSON格式更易读:
with open('device_result.json', 'w', encoding='utf-8') as f:
    json.dump(result, f, indent=2, ensure_ascii=False)

方法优势

  • 依赖Pandas的矢量化操作,比手动循环处理大数据集更快、资源占用更低
  • 内置方法to_dict('records')直接完成行到字典列表的转换,代码简洁易维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:10:45