以下是一个示例代码,演示如何按月或年对数组进行分组,并对每个分组进行求和。
import datetime
def group_and_sum(arr, group_by):
result = {}
for item in arr:
if group_by == 'month':
group = item['date'].strftime('%Y-%m')
elif group_by == 'year':
group = item['date'].strftime('%Y')
else:
raise ValueError('group_by parameter must be "month" or "year"')
if group not in result:
result[group] = 0
result[group] += item['value']
return result
# 示例数据
data = [
{'date': datetime.datetime(2021, 1, 10), 'value': 100},
{'date': datetime.datetime(2021, 1, 15), 'value': 200},
{'date': datetime.datetime(2021, 2, 5), 'value': 300},
{'date': datetime.datetime(2021, 2, 20), 'value': 400},
{'date': datetime.datetime(2022, 1, 1), 'value': 500},
{'date': datetime.datetime(2022, 2, 10), 'value': 600},
]
# 按月分组并求和
result_by_month = group_and_sum(data, 'month')
print(result_by_month)
# 按年分组并求和
result_by_year = group_and_sum(data, 'year')
print(result_by_year)
输出结果:
{'2021-01': 300, '2021-02': 700}
{'2021': 1000, '2022': 1100}
以上代码使用datetime
模块来处理日期,根据传入的group_by
参数选择是按月还是按年进行分组。然后使用字典来存储每个分组的求和结果。最后返回结果字典。
上一篇:按月/年对类别进行分组的柱状图
下一篇:按月/年加入CTE的分组