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

如何将DataFrame中timestamp为0的行与前一行求和合并?

合并DataFrame中timestamp为0的行与前一行

需求说明

给定包含重复事件的大型DataFrame,当某行的b列(timestamp)为0时,将该行与前一行求和合并(仅c列相加,保留前一行的a和b值)。

示例数据构造

import pandas as pd

data = {
    'a': [139, 163, 163, 172, 183, 183],
    'b': [4e+08, 6e+08, 0, 6e+08, 6e+08, 0],
    'c': [0.234, 0.964, 0.034, 1.173, 0.734, 0.296]
}
df = pd.DataFrame(data)

实现代码

# 定位所有timestamp为0的行索引
zero_rows = df[df['b'] == 0].index
# 对应前一行的索引
prev_rows = zero_rows - 1

# 将0行的c值累加到前一行的c列
df.loc[prev_rows, 'c'] += df.loc[zero_rows, 'c'].values

# 删除所有timestamp为0的行,重置索引
df = df[df['b'] != 0].reset_index(drop=True)

输出结果

执行后得到目标DataFrame:

a          b      c
0  139  400000000.0  0.234
1  163  600000000.0  0.998
2  172  600000000.0  1.173
3  183  600000000.0  1.030

注意事项

  • 该方法基于索引操作,无循环,适合处理大型DataFrame,效率较高
  • 若存在连续多行b=0的情况,会依次将每行的c值累加到各自的前一行,符合逐行合并的逻辑

内容的提问来源于stack exchange,提问作者Matteo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:27:26