给定一个 Dataframe df,如何找出所有值为0的列?
df
0 1 2 3 4 5 6 7 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 1 1
预期产出
2 4 0 0 0 1 0 0
6uxekuva1#
我只是将值与0进行比较,并使用.all():
.all()
>>> df = pd.DataFrame(np.random.randint(0, 2, (2, 8))) >>> df 0 1 2 3 4 5 6 7 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 1 1 >>> df == 0 0 1 2 3 4 5 6 7 0 True True True False True True False True 1 False False True True True False False False >>> (df == 0).all() 0 False 1 False 2 True 3 False 4 True 5 False 6 False 7 False dtype: bool >>> df.columns[(df == 0).all()] Int64Index([u'2', u'4'], dtype=int64) >>> df.loc[:, (df == 0).all()] 2 4 0 0 0 1 0 0
inkz8wg92#
另一种方法是mask非零值并删除所有值都被屏蔽的列。
mask
df1 = df.mask(df != 0).dropna(axis=1) # or filter the entire frame df1 = df[df.eq(0)].dropna(axis=1)
2条答案
按热度按时间6uxekuva1#
我只是将值与0进行比较,并使用
.all()
:inkz8wg92#
另一种方法是
mask
非零值并删除所有值都被屏蔽的列。