df.loc[:, (df != 0).any(axis=0)]
以下是其工作方式的细分:
In [74]: import pandas as pdIn [75]: df = pd.Dataframe([[1,0,0,0], [0,0,1,0]])In [76]: dfOut[76]: 0 1 2 30 1 0 0 01 0 0 1 0[2 rows x 4 columns]
df != 0创建一个布尔数据框,该框为True,其中
df非零:
In [77]: df != 0Out[77]: 0 1 2 30 True False False False1 False False True False[2 rows x 4 columns]
(df !=0).any(axis=0)返回一个布尔系列,指示哪些列具有非零条目。(该
any*** 作将沿0轴(即沿行)的值聚合为一个布尔值。因此,结果是每列一个布尔值。)
In [78]: (df != 0).any(axis=0)Out[78]: 0 True1 False2 True3 Falsedtype: bool
而且
df.loc可以用来选择那些列:
In [79]: df.loc[:, (df != 0).any(axis=0)]Out[79]: 0 20 1 01 0 1[2 rows x 2 columns]
要“删除”零列,请重新分配
df:
df = df.loc[:, (df != 0).any(axis=0)]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)