我有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