我遇到了一个奇怪的情况,我相信我们大多数人都面临过这种情况。我有一段简单的代码,可以随机返回2组结果。在代码中,我有2个矩阵,其中的行代表memberID
,列代表questionID
和Level
。我正在尝试创建一个最终矩阵,它会给出每个学生在特定考试中的分数。这是一段代码:
encodedID = '123'
#get dataframe having only True,False,NaN
selectedTestsPivotCorrect = selectedTests[selectedTests['conceptname'] == encodedid].pivot_table(index=['memberid'],
columns=['questionid', 'irt_tlevel'],
values='correct', aggfunc=np.max)
#get dataframe having only 1,2,3,NaN
selectedTestsPivotLevel = selectedTests[selectedTests['conceptname'] == encodedid].pivot_table(index=['memberid'],
columns=['questionid', 'irt_tlevel'],
values='Level', aggfunc=np.max)
#replace True with 1
selectedTestsPivotCorrect = selectedTestsPivotCorrect.replace(True, 1)
#replace False with 0
selectedTestsPivotCorrect = selectedTestsPivotCorrect.replace(False, 0)
#replace NaN with 0
selectedTestsPivotCorrect.fillna(0, inplace=True)
#replace NaN with 0
selectedTestsPivotLevel.fillna(0, inplace=True)
#multiply corresponding cells of the 2 matrices and find row sums to get score on test
resultSet = (selectedTestsPivotCorrect * selectedTestsPivotLevel).sum(axis=1)
请注意,涉及selectedTests
和encodedID
的最基本变量根本没有变化,但是当我多次执行此代码时,我得到两组结果中的任何一组,让我们调用他们ResultSet A
和ResultSet B
。
我在代码中发现了一个我无法发现的明显错误吗? pivot_table
是否应对这场灾难负责?