我有一个数据框架,看起来像这样:
user institution group result quiz
a Company 1a True zzz
a Company 1a False yyy
a Company 1a True yyy
a Company 1a False www
b Company 1a False www
c Company 1b False yyy
c Company 1b True yyy
d Company 1c True qqq
d Company 1c True zzz
d Company 1c True yyy
e Company 1c False zzz
e Company 1c False yyy
e Company 1c False yyy
机构是相同的(在原始数据集中我有多个机构,但我将数据集拆分为多个数据帧,如上图)。用户可以多次回答多个测验。每个用户只能属于一个组。
我怎么能只考虑每个用户回答的每个测试的第一个答案?
user institution group FirstResult quiz
a Company 1a True zzz
a Company 1a False yyy
a Company 1a False www
b Company 1a False www
c Company 1b False yyy
d Company 1c True qqq
d Company 1c True zzz
d Company 1c True yyy
e Company 1c False zzz
e Company 1c False yyy
我尝试使用df.drop
天真地手动删除行,但是当数据框很大时,这是不可能的。条件基本上是user
和quiz
出现第二次、第三次、第n次。
Pandas具有DataFrame.drop_duplicates()
功能:
deduped = df.drop_duplicates(subset=["user", "institution", "group", "quiz"], keep="first")