如何将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
相关产品推荐
相关产品推荐

