从数据框中列中条件值>0 的所有列中删除重复项

Remove duplicates from all columns with condition value>0 in columns in data frame

我需要删除所有列中的重复项。

我的数据:

id   country  publisher   weak     A        B        C
123    US        X          1     6.77      0        0
123    US        X          1       0      1.23     88.7
456    BZ        Y          2       0      56.87    9.65      
456    BZ        Y          2     2.76       0       0  
456    BZ        Y          2       0        0       0

我用了drop_duplicates-

df1=df.drop_duplicates()

但我需要一个条件,使每个 id 的所有值都>0。

此外,我的列不止 'A'、'B'、'C',所以我正在寻找将所有列都考虑在内的解决方案。

这是我正在寻找的示例:

id   country  publisher  weak     A       B        C
123    US        X        1     6.77     1.23     88.7
456    BZ        Y        2     2.76     56.87    9.65

尝试做:

cols = ['A', 'B'] # change columns to aggregate more data

def app_func(s):
    return s[~s.eq(0)].bfill().dropna().drop_duplicates()

df.groupby(['id', 'country', 'publisher'])[cols].apply(app_func).reset_index()

这将为您提供所需的输出
groups=df.groupby(['id','country','publisher']).sum()