Mon cadre de données ressemble à ceci (il est indiqué que le format de l'heure est le suivant datetime64[ns, UTC]
):
name job feedback question time
a j1 False q1 2021-09-06 09:25:03.659000+00:00
a j1 True q1 2021-09-06 09:35:03.659000+00:00
a j1 True q2 2021-09-06 09:24:03.659000+00:00
b j1 False q1 2021-09-06 10:25:03.659000+00:00
b j1 True q1 2021-09-06 09:25:04.659000+00:00
c j1 True q3 2021-09-06 11:25:03.659000+00:00
c j1 False q3 2021-09-06 09:00:03.659000+00:00
d j1 False q2 2021-09-06 08:25:03.659000+00:00
d j1 True q2 2021-09-06 11:24:05.659000+00:00
Je veux seulement regarder les feedback
qui ont été donnés la première fois a question
a été tenté par chaque name
. Donc :
name job feedback question time
a j1 False q1 2021-09-06 09:25:03.659000+00:00
a j1 True q2 2021-09-06 09:24:03.659000+00:00
b j1 True q1 2021-09-06 09:25:04.659000+00:00
c j1 False q3 2021-09-06 09:00:03.659000+00:00
d j1 False q2 2021-09-06 08:25:03.659000+00:00
J'ai essayé :
deduped = df.drop_duplicates(subset=["name", "job", "question"], keep="first")
Mais cela ne fonctionne pas toujours car les enregistrements sont parfois dans un ordre aléatoire.
Est-il possible de trier d'abord par temps, puis de conserver ma ligne unique, comme ci-dessus ? Existe-t-il un autre moyen sûr de le faire ?