如何对Pandas中以相同前缀开头的列按行求和
问题描述
我创建了如下Pandas DataFrame:
ds = {'col1' : [1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,4,4], 'feature1' : [1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,4,4], 'col2' : [12,3,4,5,4,3,2,3,4,6,7,8,3,3,65,4,3,2,32,1,2,3,4,5,32], } df = pd.DataFrame(data=ds)
该DataFrame输出如下:
print(df) col1 feature1 col2 0 1 1 12 1 1 1 3 2 1 1 4 3 1 1 5 4 1 1 4 5 1 1 3 6 1 1 2 7 2 2 3 8 2 2 4 9 2 2 6 10 2 2 7 11 3 3 8 12 3 3 3 13 3 3 3 14 3 3 65 15 3 3 4 16 4 4 3 17 4 4 2 18 4 4 32 19 4 4 1 20 4 4 2 21 4 4 3 22 4 4 4 23 4 4 5 24 4 4 32
需要新增一个名为sumOfCols的列,该列的值为所有名称以col开头的列的行求和结果(示例中feature1列不参与计算)。
解决方案
方法一:分步实现
- 筛选出所有列名以
col开头的列 - 对筛选后的列按行求和,赋值给新列
sumOfCols
# 筛选目标列 target_cols = df.columns[df.columns.str.startswith('col')] # 新增求和列 df['sumOfCols'] = df[target_cols].sum(axis=1)
方法二:一行代码简化
直接在求和操作中嵌入列筛选逻辑:
df['sumOfCols'] = df.loc[:, df.columns.str.startswith('col')].sum(axis=1)
执行上述代码后,DataFrame会新增sumOfCols列,每行值为对应行所有col开头列的数值之和,比如第一行结果为1+12=13,第二行结果为1+3=4,完全符合需求。
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

