Python Pandas实现按A列数值条件求和生成sum列
解决方案
可以通过Pandas的apply函数结合行级操作实现需求,核心逻辑是根据每行A列的数值,从B列开始选取对应数量的单元格并求和。
步骤1:导入Pandas并构造示例数据
先导入库,同时还原你提供的示例表格:
import pandas as pd # 构造示例数据 data = { 'A': [1, 2, 3, 4, 5], 'B': [1, 1, 1, 1, 1], 'C': [pd.NA, 2, 2, 1.0, 1.0], 'D': [pd.NA, pd.NA, 2, 1.0, 1.0], 'E': [pd.NA, pd.NA, pd.NA, 1.0, 1.0], 'F': [pd.NA, pd.NA, pd.NA, pd.NA, 1.0] } df = pd.DataFrame(data)
步骤2:定义求和函数并生成sum列
编写行处理函数,对每行执行以下操作:
- 获取A列指定的需要求和的单元格数量
- 从B列开始选取对应数量的列
- 对这些列的数值求和(自动忽略NaN)
def calculate_row_sum(row): # 获取需要选取的单元格数量 count = row['A'] # 确定从B列开始的目标列范围 start_col_idx = df.columns.get_loc('B') target_cols = df.columns[start_col_idx : start_col_idx + count] # 对目标列的数值求和 return row[target_cols].sum(skipna=True) # 生成sum列 df['sum'] = df.apply(calculate_row_sum, axis=1)
最终结果
执行代码后,df的输出与你提供的示例完全一致:
A B C D E F sum 0 1 1 NaN NaN NaN NaN 1 1 2 1 2 NaN NaN NaN 3 2 3 1 2 2 NaN NaN 5 3 4 1 1.0 1.0 1.0 NaN 4 4 5 1 1.0 1.0 1.0 1.0 5
内容的提问来源于stack exchange,提问作者coolb
相关产品推荐
相关产品推荐

