我有 2 个数据框df = pd.DataFrame({'Question': ['Q1', 'Q2', 'Q3'], 'Category' : ["Problem", "Problem", "Problem"], 'ScoreTruth' : [2, 9, 3], 'ScoreFalse' :[0,0,0]} )
Question Category ScoreTruth ScoreFalse
0 Q1 Problem 2 0
1 Q2 Problem 9 0
2 Q3 Problem 3 0
dfTotal = pd.DataFrame({'Name' : ['person1', 'person2','person3'], "Q1": ["TRUE","TRUE","TRUE"] ,"Q2" : ["TRUE","FALSE",np.nan], "Q3": [np.nan,"FALSE",np.nan]})
Name Q1 Q2 Q3
0 person1 TRUE TRUE NaN
1 person2 TRUE FALSE FALSE
2 person3 TRUE NaN NaN
我想要两个dfTotal基于分数的新列df
“Total Applicable”-> 每dfTotal行中所有得分值 (TRUE/FALSE) 的总和(忽略 NaN 值得分)以及基于dfQ1、Q2、Q3 的匹配值,即 row0 = 2+9 = 11、row1 = 2+ 9+3 = 14,行2 = 2
“Total Truth” -> 一行中所有 TRUE 得分值的总和(从 中提取的得分df)
我设法得到了第二个有点完整的结果,dfTotal['Total Truth'] = [x for x in np.sum(dfTotal.values == "TRUE", 1)]但这并没有考虑到“ScoreTruth”值df
Name Q1 Q2 Q3 Total Truth
0 person1 TRUE TRUE NaN 2
1 person2 TRUE FALSE FALSE 1
2 person3 TRUE NaN NaN 1
我如何考虑将dfTotal "Q1", "Q2", "Q3"值为“TRUE”的列与 Q1、Q2、Q3 中各自的索引相匹配的 ScoreTruth 值df,然后提取这些分数并对它们求和?
我想要这样的输出
Name Q1 Q2 Q3 Total Applicable Total Truth
0 person1 TRUE TRUE NaN 11 11
1 person2 TRUE FALSE FALSE 14 2
2 person3 TRUE NaN NaN 2 2
np.where()
唯一的区别是我想对行值进行求和,而不是将 TRUE/FALSE 值设置为分数。
弑天下
相关分类