使用python删除数据框中的零个值

嗨大家我需要一些帮助python。

我正在处理一个excel与几行,这些行的一些在所有列中的值为零,所以我需要删除那些行。

In id abcda 0 1 5 0 b 0 0 0 0 c 0 0 0 0 d 0 0 0 1 e 1 0 0 1 Out id abcda 0 1 5 0 d 0 0 0 1 e 1 0 0 1 

我认为在类似的东西显示不包含零的行,但不工作,因为是删除所有行零和零

 path = '/Users/arronteb/Desktop/excel/ejemplo1.xlsx' xlsx = pd.ExcelFile(path) df = pd.read_excel(xlsx,'Sheet1') df_zero = df[(df.OTC != 0) & (df.TM != 0) & (df.Lease != 0) & (df.Maint != 0) & (df.Support != 0) & (df.Other != 0)] 

然后,我想像只显示零列

 In id abcda 0 1 5 0 b 0 0 0 0 c 0 0 0 0 d 0 0 0 1 e 1 0 0 1 Out id abcdb 0 0 0 0 c 0 0 0 0 

所以我做了一些改变,我有这样的事情

 path = '/Users/arronteb/Desktop/excel/ejemplo1.xlsx' xlsx = pd.ExcelFile(path) df = pd.read_excel(xlsx,'Sheet1') df_zero = df[(df.OTC == 0) & (df.TM == 0) & (df.Lease == 0) & (df.Maint == 0) & (df.Support == 0) & (df.Other == 0)] 

通过这种方式,我只得到零列。 我需要一种方法来从原始input中删除这2行,并接收没有行的输出。 谢谢,对不起的英语感到抱歉,我也正在努力

考虑到你的input,你可以根据是否所有的列是零,然后访问它们,例如:

 groups = df.groupby((df.drop('id', axis= 1) == 0).all(axis=1)) all_zero = groups.get_group(True) non_all_zero = groups.get_group(False) 

对于这个dataframe:

 df Out: id abcde 0 a 2 0 2 0 1 1 b 1 0 1 1 1 2 c 1 0 0 0 1 3 d 2 0 2 0 2 4 e 0 0 0 0 2 5 f 0 0 0 0 0 6 g 0 2 1 0 2 7 h 0 0 0 0 0 8 i 1 2 2 0 2 9 j 2 2 1 2 1 

暂时设置索引:

 df = df.set_index('id') 

删除包含全零的行并重置索引:

 df = df[~(df==0).all(axis=1)].reset_index() df Out: id abcde 0 a 2 0 2 0 1 1 b 1 0 1 1 1 2 c 1 0 0 0 1 3 d 2 0 2 0 2 4 e 0 0 0 0 2 5 g 0 2 1 0 2 6 i 1 2 2 0 2 7 j 2 2 1 2 1