如何在Pandas DataFrame子集中按行仅求和指定列并新增列?
Pandas 精准指定列按行求和并新增列(类tidyverse管道操作)
直接用Pandas的assign()方法就能实现你要的效果,逻辑和tidyverse里的mutate()+管道完全一致,精准只对Score1和Score2按行求和,同时保留所有原列:
核心代码示例
import pandas as pd # 构造匹配你数据结构的示例数据 df = pd.DataFrame({ 'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35], 'Score1': [85, 90, 78], 'Score2': [92, 88, 85] }) # 链式操作:新增Total_Score列,仅对指定列求和 df = df.assign(Total_Score=lambda x: x[['Score1', 'Score2']].sum(axis=1))
关键说明
assign()对应tidyverse里的mutate(),用来新增/修改列,支持链式调用(类管道操作)lambda x里的x指代当前链式步骤中的DataFrame,通过x[['Score1', 'Score2']]精准选中要计算的列,避免误加其他数值列(比如age)sum(axis=1)表示按行求和,对应R里的rowSums()
类管道风格的扩展操作
如果要像R里的%>%一样串联多个操作(比如先筛选再计算),直接链式写就行,用反斜杠换行更清晰:
# 示例:先筛选age>28的行,再新增求和列 df_processed = df \ .query("age > 28") \ .assign(Total_Score=lambda x: x[['Score1', 'Score2']].sum(axis=1))
内容的提问来源于stack exchange,提问作者Avi
相关产品推荐
相关产品推荐

