【发布时间】:2018-04-08 02:39:36
【问题描述】:
我有 2 个 csv 文件,如下所示,我想在找到它们的值后使用来比较函数来查找个人表现(在 df1 中)是否高于/低于班级平均水平(在 df2 中)。
df1:
Name Class Test1 Test2 Test3
John 9A 75 83 77
David 9B 65 67 55
Peter 9A 85 90 88
Tom 9C 74 92 78
df2:
Class Test1 Test2 Test3
9A 80 82 84
9B 84 75 77
9C 75 78 80
这是我的方法,如果我错了,请随时纠正/指导我。我首先在df1 中找到个人的Class,例如John 是9A,然后根据9A 在df2 中返回Test1 或Test2 等其他列
target_class = df1.loc[df1['Name'] == 'John', 'Class']
print(target_class)
>>>>9A
Test1_avg = df2.loc[df2['Class'] == target_class, 'Test1']
# ideally it should return 80
我得到了这个ValueError: Can only compare identically-labeled Series objects
或者简单地说,你会如何比较 df1 中 John 的 Test1 和 df2 中 9A 类的 Test1?有没有比我更简单的方法?感谢您的帮助!
更新:然后我将使用这样的比较函数返回一个分数(如果它满足条件)
def comparison(a, b):
return 2 if a > b else 1 if a == b else -1
【问题讨论】: