gpt4 book ai didi

pandas - 检查用户 ID 交互的 pandas 数据框中的唯一条目

转载 作者:行者123 更新时间:2023-12-05 05:50:20 26 4
gpt4 key购买 nike

我有这样的数据框:

user_id : 代表用户

question_id : 代表问题编号

user_answer : 用户从 (A,B,C,D) 中选择了哪个选项

correct_answer:该特定问题的正确答案是什么

正确:如果为 0.0 则表示用户回答不正确,如果为 1.0 则表示用户回答正确

elapsed_time :它表示用户回答该问题所花费的时间(以分钟为单位)

<表类="s-表"><头>user_idquestion_iduser_answer正确答案正确elapsed_time<正文>1130一个B0.02.001130BB1.05.001130BB1.02.00210CD0.07.00210一个D0.09.00210BD0.013:00210DD1.04.00210DD1.01.50

我希望另一个数据框看起来像这样

<表类="s-表"><头>user_id尝试的问题尝试过的独特问题百分比<正文>190006000=(6000/13169)*100250004800=(5000/13169)*10051200010000=(10000/13169)*10015100030=(30/13169)*10023255255=(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'})

这给了我尝试过的问题列,如何找到尝试过的独特问题列?

对于 Unique Questions Attempted 列,当用户更正答案时,我需要该唯一条目。

例如:

<表类="s-表"><头>user_idquestion_iduser_answer正确答案正确elapsed_time<正文>1130一个B0.02.001130BB1.05.001130BB1.02.00210CD0.07.00210一个D0.09.00210DD1.04.00210DD1.01.50

在此数据框中:当用户第一次更正问题时,应考虑独特的问题尝试,如本例所示用户 1 已在第 2 次和第 3 次尝试中更正了问题。它应该考虑第二次尝试。用户 2 也一样,用户 2 在第 3 次和第 4 次尝试中更正了问题,应该考虑第 3 次尝试

最佳答案

通过链掩码为每个 user_idquestion_id 创建第一个正确答案的辅助列,用于测试 == by Series.eqDataFrame.duplicated :

df['new'] = df['correct'].eq(1) & ~df.duplicated(['user_id','question_id','correct'])
print (df)
user_id question_id user_answer correct_answer correct elapsed_time \
0 1 130 A B 0.0 2.0
1 1 130 B B 1.0 5.0
2 1 130 B B 1.0 2.0
3 2 10 C D 0.0 7.0
4 2 10 A D 0.0 9.0
5 2 10 B D 0.0 13.0
6 2 10 D D 1.0 4.0
7 2 10 D D 1.0 1.5

new
0 False
1 True
2 False
3 False
4 False
5 False
6 True
7 False

然后对于计数 True 的聚合 sum 和计数唯一的 questions 使用 DataFrameGroupBy.nunique :

df1 = (df.groupby(['user_id'])
.agg(**{'Questions Attempted':('question_id','nunique'),
'Unique Questions Attempted':('new','sum')})
.reset_index())

最后似乎百分比是必要的除以独特问题的数量:

no_uniq_q = df['correct'].nunique()
df1['Percentage'] = df1['Unique Questions Attempted'].div(no_uniq_q).mul(100)
print (df1)
user_id Questions Attempted Unique Questions Attempted Percentage
0 1 1 1 50.0
1 2 1 1 50.0

关于pandas - 检查用户 ID 交互的 pandas 数据框中的唯一条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70528593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com