【发布时间】:2021-12-30 07:25:52
【问题描述】:
我有这个看起来像这样的数据框:
user_id : 代表用户
question_id : 代表问题编号
user_answer : 用户从 (A,B,C,D) 中选择了哪个选项
correct_answer:该特定问题的正确答案是什么
正确:如果 0.0 表示用户回答不正确,如果 1.0 表示用户回答正确
elapsed_time : 它表示用户回答该问题所用的分钟数
| user_id | question_id | user_answer | correct_answer | correct | elapsed_time |
|---|---|---|---|---|---|
| 1 | 130 | A | B | 0.0 | 2.00 |
| 1 | 130 | B | B | 1.0 | 5.00 |
| 1 | 130 | B | B | 1.0 | 2.00 |
| 2 | 10 | C | D | 0.0 | 7.00 |
| 2 | 10 | A | D | 0.0 | 9.00 |
| 2 | 10 | B | D | 0.0 | 13.00 |
| 2 | 10 | D | D | 1.0 | 4.00 |
| 2 | 10 | D | D | 1.0 | 1.50 |
我希望另一个数据框看起来像这样
| user_id | Questions Attempted | Unique Questions Attempted | Percentage |
|---|---|---|---|
| 1 | 9000 | 6000 | =(6000/13169)*100 |
| 2 | 5000 | 4800 | =(5000/13169)*100 |
| 5 | 12000 | 10000 | =(10000/13169)*100 |
| 15 | 1000 | 30 | =(30/13169)*100 |
| 23 | 255 | 255 | =(255/13169)*100 |
到目前为止我所做的就是这样
df_total_questions_attempted = df.groupby(['user_iD'], as_index=False , sort=False)['question_id'].count()
df_total_questions_attempted = df_total_questions_attempted.rename(columns={'question_id': 'Total Questions Attempted'})
这给了我 Questions Attempted 列,我如何找到 Unique Questions Attempted 列?
对于 Unique Questions Attempted 列,当用户更正答案时,我需要该唯一条目。
例如:
| user_id | question_id | user_answer | correct_answer | correct | elapsed_time |
|---|---|---|---|---|---|
| 1 | 130 | A | B | 0.0 | 2.00 |
| 1 | 130 | B | B | 1.0 | 5.00 |
| 1 | 130 | B | B | 1.0 | 2.00 |
| 2 | 10 | C | D | 0.0 | 7.00 |
| 2 | 10 | A | D | 0.0 | 9.00 |
| 2 | 10 | D | D | 1.0 | 4.00 |
| 2 | 10 | D | D | 1.0 | 1.50 |
在此数据框中:在用户第一次更正问题时应考虑独特的问题尝试,如本例所示 用户 1 在第二次和第三次尝试中更正了问题。它应该考虑第二次尝试。 用户 2 也是如此,用户 2 在第 3 次和第 4 次尝试中更正了问题,应该考虑 第 3 次尝试
【问题讨论】:
-
计数
Percentage栏目怎么样? -
@jezrael:唯一问题总数为:13169。因此,用于百分比的公式为:(尝试的唯一问题数/13169)*100
-
超级,只需编辑答案。