pandas场景下高效实现两个时间Series对应值求和的方法咨询
高效实现方法
pandas 内置的 Series 加法已经做了高度优化,直接调用add()方法并指定空值填充参数即可,不需要手动实现关联或归并逻辑,性能远高于自定义的实现方案。
示例代码
import pandas as pd # 构造示例 Series s1 = pd.read_json('{"count":{"1614470400000":4,"1617148800000":0,"1619740800000":0,"1622419200000":4,"1625011200000":4,"1627689600000":5,"1630368000000":0,"1632960000000":8,"1635638400000":2}}')['count'] s2 = pd.read_json('{"count":{"1625011200000":1}}')['count'] # 按索引对齐相加,不存在的索引值默认填充0 result = s1.add(s2, fill_value=0).astype(int)
方案优势
- 自动完成索引对齐,底层针对有序索引(时间戳场景下几乎都是有序的)默认采用优化后的归并逻辑,性能远高于手动写的关联操作
- 内置向量化运算,不需要自己处理空值判断,代码简洁不易出错
- 针对超大规模数据(千万级条目以上),只要提前确认两个Series的索引处于排序状态,pandas会自动选择最高效的合并路径,不需要额外做其他配置
可选优化
如果你的索引是毫秒时间戳格式,可以提前转为 datetime 索引,进一步提升索引匹配效率:
s1.index = pd.to_datetime(s1.index, unit='ms') s2.index = pd.to_datetime(s2.index, unit='ms')
内容的提问来源于stack exchange,提问作者ntg
相关产品推荐
相关产品推荐

