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

