繁体   English   中英

Python:根据另一列值从 DataFrame 中删除重复项

[英]Python: Remove duplicates from DataFrame based on another column value

我有以下带有虚构数据的表格:

在此处输入图像描述

我想删除所有重复的行,只保留“赢得营业额”中包含正值的行。 因此,在这种情况下,应删除标记为红色的两行

此外,如果有重复行只有 Lost Turnover,则应保留营业额最高的行(底部两行)。

也许这可以做到:

df.sort_values(['Won Turnover', 'Lost Turnover'], ascending=False).drop_duplicates('Supplier')

首先使用GroupBy.all测试Won Turnover的每个组的缺失值,并仅测试每个Lost Turnovermax 通过&链接按位AND并添加新条件以返回每个Won Turnover的所有不丢失行与| 对于按位OR

m1 = (df.assign(new = df['Won Turnover'].isna())
        .groupby(['Date','Supplier','Customer'])['new'].transform('all'))
m2 = (df.groupby(['Date','Supplier','Customer'])['Lost Turnover'].transform('max')
        .eq(df['Lost Turnover']))
df = df[(m1 & m2) | df['Won Turnover'].notna()]
print (df)

         Date Supplier   Customer  Won Turnover  Lost Turnover
1  25.06.2019     Nike      Pepsi       25000.0            NaN
2  25.06.2019     Nike  McDonalds       10000.0            NaN
3  25.06.2019   Adidas  Coca Cola       12000.0            NaN
5  25.06.2019   Adidas  McDonalds       35000.0            NaN
6  25.06.2019   Adidas      Pepsi           NaN        15000.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM