Python中如何合并时间序列同日期同ID数据并按值求和
同日期同ID重复条目按数值求和合并方案
核心处理逻辑:以date、id两个字段作为分组键,对所有需要合并的数值字段执行求和聚合,即可完成重复条目的合并。
Python Pandas 实现
这是最常用的本地结构化数据集处理方案,代码如下:
import pandas as pd # 替换为你的数据读取逻辑,比如pd.read_csv("你的文件路径.csv") df = pd.DataFrame({ 'date': ['d1', 'd1', 'd2', 'd2', 'd3', 'd3', 'd3'], 'id': [1, 1, 1, 1, 1, 1, 2], 'x': [100, 0, 80, 0, 110, 0, 70], 'y': [0, 20, 0, 30, 0, 15, 60] }) # 分组聚合:按date、id分组,对x、y字段求和 df_merged = df.groupby(['date', 'id'], as_index=False)[['x', 'y']].sum()
执行后得到的合并结果和预期完全一致:
date id x y 0 d1 1 100 20 1 d2 1 80 30 2 d3 1 110 15 3 d3 2 70 60
- 补充说明:如果数据集里存在其他需要合并的数值字段,直接将字段名追加到
[['x', 'y']]的列表中即可;如果需要自动对所有数值类型字段求和,可以将聚合逻辑替换为df.groupby(['date', 'id'], as_index=False).sum(numeric_only=True),无需手动指定字段。
SQL 实现
如果数据存储在数据库中,直接使用分组聚合语句即可完成合并:
SELECT date, id, SUM(x) AS x, SUM(y) AS y FROM 你的表名 GROUP BY date, id;
R dplyr 实现
使用R语言生态处理的实现代码如下:
library(dplyr) df_merged <- df %>% group_by(date, id) %>% summarise( x = sum(x), y = sum(y), .groups = "drop" )
内容的提问来源于stack exchange,提问作者Fernando Quintino
相关产品推荐
相关产品推荐

