比较熊猫中的“关键答案”和“答案”数据框

问题描述

我有这个主要的 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_preffixeq

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