Pandas删除user与quiz组合重复行,保留用户每道测验首次答题记录
解决方案
你需要的功能可以直接通过pandas内置的drop_duplicates方法实现,该方法做了底层优化,即使是大体积DataFrame也能高效处理,无需手动删行。
前提确认
请先确保你的原始DataFrame行顺序是按答题时间升序排列的,即同一用户同一测验的答题记录中,首次作答的行排在最前。如果有单独的答题时间字段,可先执行排序操作保证顺序正确:
# 按用户、测验、答题时间升序排序,确保首次作答记录在前 df = df.sort_values(by=['user', 'quiz', 'answer_time'], ascending=True)
核心去重代码
# 按user和quiz组合去重,仅保留每组第一条记录 res_df = df.drop_duplicates(subset=['user', 'quiz'], keep='first') # 按需修改列名匹配期望输出 res_df = res_df.rename(columns={'result': 'FirstResult'})
参数说明
subset:指定判断重复的依据列,这里传入user和quiz即可识别两个字段组合重复的行keep='first':指定重复行中保留最先出现的那一条,刚好匹配保留首次答题记录的需求
运行后得到的res_df就和你给出的期望输出完全一致。
内容的提问来源于stack exchange,提问作者johnnydoe
相关产品推荐
相关产品推荐

