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

如何对数据列表按日期进行分组?

如何对数据列表按日期进行分组?

嘿,这个需求太常见啦!我给你分享几种主流编程语言里的实现思路,你可以根据自己用的技术栈来选:

Python 实现方法

方法1:用标准库 itertools.groupby

这个方法需要先把数据按日期排序(因为groupby只会把连续的相同键分到一组),然后再分组。举个例子:

from itertools import groupby

# 示例数据,假设每个元素是包含日期和其他信息的字典
data = [
    {"date": "2024-05-20", "value": 10},
    {"date": "2024-05-21", "value": 20},
    {"date": "2024-05-20", "value": 15},
    {"date": "2024-05-22", "value": 30},
]

# 先按日期排序
sorted_data = sorted(data, key=lambda x: x["date"])
# 按日期分组
grouped_data = {}
for date, items in groupby(sorted_data, key=lambda x: x["date"]):
    grouped_data[date] = list(items)

print(grouped_data)

方法2:用 pandas(更适合处理大量数据)

如果是处理数据集,pandas会更高效,几行代码就能搞定:

import pandas as pd

df = pd.DataFrame(data)
grouped_df = df.groupby("date")

# 可以把分组结果转成字典格式
grouped_dict = grouped_df.apply(lambda x: x.to_dict("records")).to_dict()
print(grouped_dict)

JavaScript 实现方法

用数组的reduce方法来构建分组对象,灵活又好用:

// 示例数据
const data = [
  { date: "2024-05-20", value: 10 },
  { date: "2024-05-21", value: 20 },
  { date: "2024-05-20", value: 15 },
  { date: "2024-05-22", value: 30 },
];

const groupedData = data.reduce((acc, item) => {
  // 如果当前日期还没作为键,就新建一个空数组
  if (!acc[item.date]) {
    acc[item.date] = [];
  }
  // 把当前元素加入对应日期的数组
  acc[item.date].push(item);
  return acc;
}, {});

console.log(groupedData);

小提醒

不管用哪种方法,一定要保证日期格式统一!比如别一会儿用"2024/05/20",一会儿用"2024-05-20",不然会被当成不同的日期分错组哦。如果是用日期对象,还要注意时区差异的问题,避免出现分组偏差。

备注:内容来源于stack exchange,提问作者Mark Adams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 07:28:05