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

如何用Python Pandas实现固定起始单元格的连续求和?

Pandas实现固定首单元格的连续求和

行方向(固定每行首单元格,后续列连续累加)

先构造示例数据,再实现固定每行第一个单元格的连续求和:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    '基准值': [10, 20],
    '数值1': [2, 5],
    '数值2': [3, 7],
    '数值3': [4, 9]
})

# 提取基准值与待求和列
base_values = df['基准值']
sum_columns = df.columns[1:]

# 对每行的数值列做累加,再加上对应行的基准值
sum_result = df[sum_columns].cumsum(axis=1) + base_values.values[:, None]

# 合并基准值列与求和结果
final_df = pd.concat([df['基准值'], sum_result], axis=1)

print("原始数据:")
print(df)
print("\n处理后数据:")
print(final_df)

运行后输出:

原始数据:
   基准值  数值1  数值2  数值3
0    10     2     3     4
1    20     5     7     9

处理后数据:
   基准值  数值1  数值2  数值3
0    10    12    15    19
1    20    25    32    41

列方向(固定首行单元格,后续行连续累加)

如果是列方向需要固定第一个单元格做连续求和,代码如下:

import pandas as pd

# 构造列方向示例数据
df_col = pd.DataFrame({
    '原始数值': [10, 2, 3, 4]
})

# 提取第一个单元格作为基准值
base_val = df_col['原始数值'].iloc[0]

# 计算连续求和:基准值 + 前面所有原始数值的累加
df_col['连续求和'] = base_val + df_col['原始数值'].iloc[1:].cumsum().shift(1, fill_value=0)

print("列方向处理结果:")
print(df_col)

运行后输出:

列方向处理结果:
   原始数值  连续求和
0      10     10
1       2     12
2       3     15
3       4     19

关键说明

  • cumsum(axis=1):按行方向累加数值列,axis=0则是按列方向累加
  • base_values.values[:, None]:将一维的基准值数组转为二维,实现与每行累加结果的广播运算
  • shift(1, fill_value=0):处理列方向累加时的起始位置,保证首行结果为基准值本身

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:25:20