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

如何在DataFrame中实现相邻行数值分组求和?

你的需求非常清晰,完全可以用Python自动实现,根本不用手动计算,我给你两种常见场景的解决方案,都是基于Pandas来处理的:

场景1:原DataFrame行数不变,每组两行显示同一个求和结果

这种情况适合你需要保留原数据行,同时每行标注所在两两组的求和值:

import pandas as pd

# 先构造你的示例数据(替换成你实际的DataFrame即可)
df = pd.DataFrame({
    'original_col': [0.00871, 0.001, 0.000603, 0.0123, 0.000871, 4.37e-05]
})

# 给每行分配分组ID:每两行一组(0、0、1、1、2、2...)
df['group_id'] = df.index // 2

# 按分组计算求和,并把结果填充到每组的所有行
df['pair_sum'] = df.groupby('group_id')['original_col'].transform('sum')

# 可以删除临时的group_id列(如果不需要的话)
df = df.drop('group_id', axis=1)

print(df)

运行后输出的结果会是:

original_col  pair_sum
0      0.008710  0.009710
1      0.001000  0.009710
2      0.000603  0.012903
3      0.012300  0.012903
4      0.000871  0.000915
5      0.000044  0.000915

场景2:只保留每组的求和结果,新DataFrame行数为原数的一半

如果你只需要每个两两组的求和值,不需要保留原数据行,可以这样做:

import pandas as pd

df = pd.DataFrame({
    'original_col': [0.00871, 0.001, 0.000603, 0.0123, 0.000871, 4.37e-05]
})

# 提取偶数位置和奇数位置的元素,对应配对
even_rows = df['original_col'].iloc[::2].reset_index(drop=True)
odd_rows = df['original_col'].iloc[1::2].reset_index(drop=True)

# 两两求和生成新列
sum_df = pd.DataFrame({'pair_sum': even_rows + odd_rows})

print(sum_df)

输出结果:

pair_sum
0  0.009710
1  0.012903
2  0.000915

处理原列长度为奇数的情况

如果你的原始数据行数是奇数(最后一个元素没有配对),可以稍微调整代码,比如把最后一个元素单独保留在结果中:

import pandas as pd

df = pd.DataFrame({
    'original_col': [0.00871, 0.001, 0.000603, 0.0123, 0.000871]
})

if len(df) % 2 != 0:
    # 提取最后一个单独的元素
    last_single = pd.Series([df['original_col'].iloc[-1]])
    # 取前面的偶数行和奇数行配对
    even_rows = df['original_col'].iloc[:-1:2].reset_index(drop=True)
    odd_rows = df['original_col'].iloc[1:-1:2].reset_index(drop=True)
    sum_vals = even_rows + odd_rows
    # 合并求和结果和单独的元素
    sum_df = pd.DataFrame({'pair_sum': pd.concat([sum_vals, last_single], ignore_index=True)})
else:
    even_rows = df['original_col'].iloc[::2].reset_index(drop=True)
    odd_rows = df['original_col'].iloc[1::2].reset_index(drop=True)
    sum_df = pd.DataFrame({'pair_sum': even_rows + odd_rows})

print(sum_df)

这样不管原数据是奇数还是偶数行,都能正常处理啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:02:45