问题描述
我有这个主要的 df1 :
Name | Course | Q_1 | Q_2 | ... | Q_60
John | Phys | A | C | ... | D
Karen| Math | C | C | ... | E
... | ... | ... | ... | ... | ...
(约1200个名字)
参考的主要答案是 df2 :
1 2 3 4 ... 60
A | C | C | E | ... | D
我想将 df1 与 df2 进行比较,以回答以下类型的问题:
-
学生是否正确回答了
- 哪些问题?
- 有多少学生对Q_3,Q_4,Q_5和Q_10的理解正确?
我已经尝试过简单地进行条件比较,但这只会给我一个np.array布尔值:是否可以索引 True / False 的位置匹配任何给定的答案,返回类似:
df3 :
Name | Course | Q_1 | Q_2 | ... |Q_60
John | Phys |True |True | ... |True
Karen| Math |False|True | ... |False
...........
然后对 True 匹配项进行条件计数以存储其位置以获取解决方案?
解决方法
使用add_preffix
和eq
:
t=df2.add_prefix('Q_').iloc[0]
df1.set_index(['Name','Course']).eq(t,1).reset_index()
示例
使用伪数据:
print(df1)
Name Course Q_1 Q_2 Q_3
0 John Phys A C D
1 Karen Math C C E
print(df2)
1 2 3
0 A C C
t=df2.add_prefix('Q_').iloc[0]
df1.set_index(['Name',1).reset_index()
Name Course Q_1 Q_2 Q_3
0 John Phys True True False
1 Karen Math False True False