我有一个如下所示的 Pandas df:
当前 df:
案例 | 任务 | Text_Present |
---|---|---|
123 | 电子邮件 | 是 |
123 | 外展 | 否 |
456 | 会话 | 否 |
456 | 电子邮件 | 否 |
我想删除重复的案例,但基于 Text_Present 字段的条件。
如果出现“是”,请保留出现“是”的记录。如果不存在“是”(例如:案例 456),则保留 456 的记录之一 - 与哪个记录无关。
我基本上是想了解 % Yes 到 % No,但由于“描述”字段导致案例重复这一事实,数学是关闭的 - 因为我想计算任何有任何任务中的“是”,就该案例而言只是“是”。
我的目标输出是:
案例 | 任务 | Text_Present |
---|---|---|
123 | 电子邮件 | 是 |
456 | 会话 | 否 |
最终,我想在一个简单的条形图中将 % Yes 与 % No 进行比较,但重复会导致百分比不准确。
据我所知,df.drop 只提供第一个和最后一个。
谢谢大家!
答案 0 :(得分:1)
您可以根据 Case
和 Text_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