使用条件从 Pandas DF 中删除重复项

Drop Duplicates from Pandas DF with Conditions

我有一个 pandas df,如下所示:

当前 df:

案例 任务 Text_Present
123 电子邮件
123 外展 没有
456 会话 没有
456 电子邮件 没有

我想删除重复的案例,但基于 Text_Present 字段的条件。

如果出现 'Yes',请记录 'Yes' 出现的地方。如果不存在 'Yes'(例如:案例 456),则保留 456 的记录之一 - 哪一个都无关紧要。

我基本上是想了解 % Yes 到 % No,但是由于案例由于描述字段而重复,所以数学不正确 - 因为我想计算任何案例在任何任务中都是 'Yes' 作为那个案例的整体 'Yes'。

我的目标输出是:

案例 任务 Text_Present
123 电子邮件
456 会话 没有

最终,我想在一个简单的条形图中比较 % Yes 和 % No,但重复会导致百分比不准确。

据我所知,df.drop 只提供第一个和最后一个。

谢谢大家!

您可以根据 CaseText_Present 对值进行排序。然后您可以将重复项删除 Case 列并保留最后一个。由于 "Yes" 按字母顺序排在 "No" 之后,它将位于最后的位置并将保留:

>>> df.sort_values(["Case", "Text_Present"]).drop_duplicates("Case", keep="last")

   Case   Task Text_Present
0   123  Email          Yes
3   456  Email           No