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

Python中按day字段分组并规范化JSON格式的实现方法

按'day'字段分组JSON列表并格式化的简便实现

纯Python实现(无第三方依赖)

不需要借助pandas,直接用基础字典和集合就能完成分组逻辑,代码简洁高效:

data = [
    {'info': {'area': 'USA', 'other': 'cat'}, 'day': '1-1-2012', 'num': 12},
    {'info': {'area': 'KSA', 'other': 'bat'}, 'day': '1-1-2012', 'num': 52},
    {'info': {'area': 'KSA', 'other': 'fat'}, 'day': '4-3-2012', 'num': 34},
]

result = {}
for item in data:
    day = item['day']
    # 初始化当前日期的分组结构
    if day not in result:
        result[day] = {'area': set(), 'num': set()}
    # 将area和num加入对应集合
    result[day]['area'].add(item['info']['area'])
    result[day]['num'].add(item['num'])

# 转换为期望的列表格式
final_output = [result]
print(final_output)

这段代码的逻辑:

  • 遍历每个数据项,以day作为分组键
  • 对每个日期,初始化包含area和num集合的结构
  • 逐个将数据中的area和num添加到对应集合中(集合会自动处理重复值)
  • 最后将分组结果字典包裹进列表,得到与期望一致的输出

简化版pandas实现(如果已依赖pandas)

如果你的项目已经在使用pandas,可以用更简洁的聚合逻辑实现:

import pandas as pd

data = [
    {'info': {'area': 'USA', 'other': 'cat'}, 'day': '1-1-2012', 'num': 12},
    {'info': {'area': 'KSA', 'other': 'bat'}, 'day': '1-1-2012', 'num': 52},
    {'info': {'area': 'KSA', 'other': 'fat'}, 'day': '4-3-2012', 'num': 34},
]

# 提取info中的area字段到单独列
df = pd.DataFrame(data).assign(area=lambda x: x['info'].map(lambda i: i['area']))
# 按day分组,聚合area和num为集合
grouped_result = df.groupby('day')[['area', 'num']].agg(set).to_dict('index')
final_output = [grouped_result]
print(final_output)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:30:04