查找行中所有id的值,然后对python求和



我有2个表w/匹配id。我想返回表2中与表1中的每个col相关联的值,并创建表3。我知道如何使用vlookup在excel中做到这一点。我还知道,在尝试执行vlookup之类的操作时,应该使用join或merge。然而,我不知道如何得到我想要的结果在这里,因为我不能简单地拖动公式到另一个单元格像在excel。

更新 这也将有助于我,如果我可以只是返回所需的总和,而不是表的颜色和总和。所以表3就是成绩的总和。

我用假数据编了一个非常简单的例子。请看下面我想要的结果
Table 1
Student 1   Student 2  Student 3
0   22882884    22882885    22882945
1   22882884    22882885    22882935

Table 2    
Student ID Grade
0   22882884   4.0
1   22882885   3.5
2   22882945   2.75
3   22882935   3.25
Table 3
Student 1   Student 2  Student 3  Sum of Grades
0   4.0           3.5       2.75      10.25  
1   4.0           3.5       3.25      9.75

stack,map,assign的和:

out = (df1
.stack()
.map(df2.set_index('Student ID')['Grade'])
.unstack()
.assign(**{'Sum of Grades': lambda d: d.sum(axis=1)})
)

输出:

Student 1  Student 2  Student 3  Sum of Grades
0        4.0        3.5       2.75          10.25
1        4.0        3.5       3.25          10.75

一个带有破碎步骤的替代方案:

s = df2.set_index('Student ID')['Grade']
out = df1.apply(lambda c: c.map(s))
out['Sum of Grades'] = out.sum(axis=1)

您可以使用itertuples:

df3 = df1.replace(dict(df2.set_index('Student ID')['Grade'].itertuples()))
df3['Sum of Grades'] = df3.sum(1)

student 1  student 2  student 3    Sum of Grades
0        4.0        3.5       2.75            10.25
1        4.0        3.5       3.25            10.75

相关内容

  • 没有找到相关文章

最新更新