您好,我有一个数据框,例如:
Group_name Event colomn1 colomn2 colomn3 colomn4
Group1 1 1 1 1 0
Group1 2 2 2 4 2
Group1 3 2 2 4 2
Group2 1 8 8 8 0
Group3 1 2 2 2 0
Group3 2 2 2 2 0
Group4 1 2 2 5 3
Group4 2 2 2 2 0
我只想保留与下列过滤器相对应的GroupNumber
:
仅当colomn4 values is =0
时才保留一个网上论坛,否则我将从标签中删除该网上论坛。
所以我应该得到:
Group_name Event colomn1 colomn2 colomn3 colomn4
Group2 1 8 8 8 0
Group3 1 2 2 2 0
Group3 2 2 2 2 0
您有想法在python中做吗?
答案 0 :(得分:1)
如果所有值均符合GroupBy.transform
(==
)的条件,则将GroupBy.all
与Series.eq
一起用于获取组:
df1 = df[df['colomn4'].eq(0).groupby(df['Group_name']).transform('all')]
print (df1)
Group_name Event colomn1 colomn2 colomn3 colomn4
3 Group2 1 8 8 8 0
4 Group3 1 2 2 2 0
5 Group3 2 2 2 2 0
另一种方法是通过Series.ne
获取所有没有0
的组,并通过~
反转掩码通过Series.isin
进行过滤:
df = df[~df['Group_name'].isin(df.loc[df['colomn4'].ne(0), 'Group_name'])]
print (df)
Group_name Event colomn1 colomn2 colomn3 colomn4
3 Group2 1 8 8 8 0
4 Group3 1 2 2 2 0
5 Group3 2 2 2 2 0