使用条件从 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 只提供第一个和最后一个。
谢谢大家!
您可以根据 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
我有一个 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 只提供第一个和最后一个。
谢谢大家!
您可以根据 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