【问题标题】:Drop Duplicates from Pandas DF with Conditions使用条件从 Pandas DF 中删除重复项
【发布时间】:2021-07-15 05:09:01
【问题描述】:

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

当前df:

Case Task Text_Present
123 Email Yes
123 Outreach No
456 Session No
456 Email No

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

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

我基本上是想了解 % Yes 到 % No,但由于“描述”字段导致案例重复,因此数学计算不正确 - 因为我想计算任何有任何任务中的“是”都只是该案例的“是”。

我的目标输出是:

Case Task Text_Present
123 Email Yes
456 Session No

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

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

谢谢大家!

【问题讨论】:

    标签: python pandas dataframe duplicates drop


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 2021-07-20
      • 2018-03-29
      相关资源
      最近更新 更多