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

时间:2021-07-14 20:59:26

标签: python pandas dataframe duplicates drop

我有一个如下所示的 Pandas df:

当前 df:

<头>
案例 任务 Text_Present
123 电子邮件
123 外展
456 会话
456 电子邮件

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

如果出现“是”,请保留出现“是”的记录。如果不存在“是”(例如:案例 456),则保留 456 的记录之一 - 与哪个记录无关。

我基本上是想了解 % Yes 到 % No,但由于“描述”字段导致案例重复这一事实,数学是关闭的 - 因为我想计算任何有任何任务中的“是”,就该案例而言只是“是”。

我的目标输出是:

<头>
案例 任务 Text_Present
123 电子邮件
456 会话

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

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

谢谢大家!

1 个答案:

答案 0 :(得分:1)

您可以根据 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