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

如何基于pandas DataFrame按id分组生成指定结构的JSON数组

Pandas 分组聚合生成指定结构JSON实现方案

核心实现逻辑

因为同一id下的desc和eml值固定,所以按id分组后,固定字段直接取首个值即可,field_name和val字段逐行打包后聚合成二维列表。

完整代码示例

import pandas as pd
import json

# 1. 构造示例DataFrame(你如果有现成df可以跳过这一步)
data = {
    "id": [1, 1, 2, 2, 2],
    "desc": ["desc in id 1", "desc in id 1", "desc in id 2", "desc in id 2", "desc in id 2"],
    "field_name": ["field_1", "field_2", "field_3", "field_4", "field_1"],
    "val": [300, 305, 530, 745, 845],
    "eml": ["test@gmail.com", "test@gmail.com", "test2@gmail.com", "test2@gmail.com", "test2@gmail.com"]
}
df = pd.DataFrame(data)

# 2. 自定义分组处理逻辑
def group_handler(group):
    return pd.Series({
        "desc": group["desc"].iloc[0],
        "eml": group["eml"].iloc[0],
        "values": group[["field_name", "val"]].values.tolist()
    })

# 3. 按id分组聚合
result_df = df.groupby("id", as_index=False).apply(group_handler)

# 4. 转成目标JSON格式
# 直接输出无格式JSON用这行
# result_json = result_df.to_json(orient="records", force_ascii=False)
# 输出格式化带缩进的JSON用下面两行
result_dict = result_df.to_dict(orient="records")
formatted_json = json.dumps(result_dict, indent=4, ensure_ascii=False)

print(formatted_json)

输出验证

运行上述代码后输出的JSON结构和你要求的完全一致,数值类型会自动保留,不需要额外转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:39:00