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

时间:2019-10-07 07:46:43

标签: python pandas dataframe duplicates

我有下表包含虚构数据:

enter image description here

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

此外,如果存在重复的行,但只有“失误”,则应保留营业额最高的行(最下面的两行)。

2 个答案:

答案 0 :(得分:1)

也许这可以做到:

"~A"

答案 1 :(得分:0)

如果每个组只有GroupBy.all仅缺少值,则首先测试Won Turnover,每个max仅测试Lost Turnover值。按&链接以按位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