如何使用Python合并两个日期数据列表并按分组对同日期数值求和
按日期分组求和的正确实现方法
你之前采用networkx图算法的思路不适用于该场景,连通组件计算会自动对所有节点去重,既会删除重复日期也会删除重复数值,无法满足数值累加的需求。直接使用Python内置的字典工具即可简单实现需求。
实现逻辑
- 用字典存储日期对应的累计值,以日期为键,累加数值为值
- 遍历两个列表的所有元素,将字符串格式的数值转换为数字后累加到对应日期的计数上
- 最终将字典转换为你需要的嵌套列表格式即可
代码示例
from collections import defaultdict # 初始化累计字典,默认初始值为0 date_total = defaultdict(int) # 遍历两个列表的所有元素(数据量极大时可分开遍历两个列表,避免合并占用额外内存) for date, val in list1 + list2: date_total[date] += int(val) # 转换为目标格式,数值保留字符串格式可执行str()转换 result = [[k, str(v)] for k, v in date_total.items()]
注:如果你的数值包含小数,将int()改为float()即可
输出示例
针对你给出的示例数据,运行后得到的结果为:
[['2021-05-24', '553720'], ['2021-05-10', '18820']]
符合你要求的输出格式。
内容的提问来源于stack exchange,提问作者Alex Zhu
相关产品推荐
相关产品推荐

