Python如何对DataFrame指定范围列按条件求和并新增列
实现代码与说明
你可以直接用pandas的按位置选列+逐行求和实现,两种常用方案如下:
import pandas as pd # 方案1:取最后10列计算,完全匹配你提到的「最后10列」需求,适配性更强,不受总列数变化影响 df['new_col'] = df.iloc[:, -10:].eq(1).sum(axis=1) # 方案2:如果要严格按你说的「第20至30列」(按从1开始计数的列序号)计算,对应pandas索引区间为19~29 df['new_col'] = df.iloc[:, 19:30].eq(1).sum(axis=1)
逻辑解释
iloc[:, 列区间]是pandas按位置选取列的标准方法,不受自定义列名的影响eq(1)会对选中区域的每个元素判断是否等于1,返回布尔矩阵,True等价于数值1,False等价于数值0sum(axis=1)按行对布尔矩阵求和,最终得到的就是每行指定范围内所有等于1的数值之和
注意事项
- pandas默认列索引从0开始计数,如果你实际的列序号规则不同,调整
iloc的列区间参数即可 - 默认开启
skipna=True参数,计算时会自动跳过空值,无需额外配置
内容的提问来源于stack exchange,提问作者user3344308
相关产品推荐
相关产品推荐

