我有下表包含虚构数据:
我想删除所有重复的行,并仅在“韩元营业额”中保留包含正值的行。因此,在这种情况下,应删除标有红色的两行
此外,如果存在重复的行,但只有“失误”,则应保留营业额最高的行(最下面的两行)。
答案 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