从数据框中列中条件值>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()
我需要删除所有列中的重复项。
我的数据:
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()