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

Pandas DataFrame按market分组生成按年排序的JSON字符串

Pandas分组生成按年份排序的JSON映射列

原数据与初始DataFrame

构造数据并生成DataFrame的代码:

import pandas as pd
# 构造数据列表
data = [['market1', 2023, 100, 200],
        ['market2', 2022, 300, 400],
        ['market1', 2021, 500, 600],
        ['market2', 2020, 700, 800]]
# 创建DataFrame
df = pd.DataFrame(data, columns=['market', 'year', 'val1', 'val2'])

打印后的数据结构:

market  year  val1  val2
0  market1  2023   100   200
1  market2  2022   300   400
2  market1  2021   500   600
3  market2  2020   700   800

需求说明

按market列分组,生成year-val1和year-val2的映射列并保存为JSON字符串(year作为键,对应值为val1或val2),且JSON中的year键需按升序排序,期望输出如下:

market  val1_json                   val2_json
market1 {"2021": 500, "2023": 100}  {"2021": 600, "2023": 200}
market2 {"2020": 700, "2022": 300}  {"2020": 800, "2022": 400}

解决方案

直接通过groupby结合自定义聚合函数实现,代码如下:

import pandas as pd
import json

# 构造数据
data = [['market1', 2023, 100, 200],
        ['market2', 2022, 300, 400],
        ['market1', 2021, 500, 600],
        ['market2', 2020, 700, 800]]
df = pd.DataFrame(data, columns=['market', 'year', 'val1', 'val2'])

# 自定义聚合函数:按year升序排序后生成JSON字符串
def to_sorted_json(series):
    # 关联原year列并按年份升序排序
    sorted_df = series.reset_index().sort_values('year')
    # 构造year:value的字典,年份转为字符串
    mapping = {str(row['year']): row[series.name] for _, row in sorted_df.iterrows()}
    # 转为JSON字符串
    return json.dumps(mapping)

# 按market分组,对val1、val2应用聚合函数
result = df.groupby('market').agg(
    val1_json=('val1', to_sorted_json),
    val2_json=('val2', to_sorted_json)
).reset_index()

print(result)

执行后输出结果与期望一致:

market                  val1_json                  val2_json
0  market1  {"2021": 500, "2023": 100}  {"2021": 600, "2023": 200}
1  market2  {"2020": 700, "2022": 300}  {"2020": 800, "2022": 400}

代码说明

  • to_sorted_json函数:接收分组后的val1/val2序列,先关联原year列并按年份升序排序,再构造键为字符串类型年份的字典,最后转为JSON字符串;
  • groupby.agg:指定要聚合的列和对应的自定义函数,直接生成目标结果;
  • reset_index():将market从索引转为普通列,匹配期望的输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:06:11