Python 3.x 如果行中的任何值为0,如何删除整行
在下面的示例中,我只想保留第1行和第2行 我想删除列中任何位置都为0的所有行:Python 3.x 如果行中的任何值为0,如何删除整行,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,在下面的示例中,我只想保留第1行和第2行 我想删除列中任何位置都为0的所有行: kt b tt mky depth 1 1 1 1 1 4 2 2 2 2 2 2 3 3 3 0 3 3 4 0 4 0 0 0 5 5 5 5 5 0 输出应如下所示: kt b tt mky depth 1 1 1 1 1 4 2 2 2 2 2 2
kt b tt mky depth
1 1 1 1 1 4
2 2 2 2 2 2
3 3 3 0 3 3
4 0 4 0 0 0
5 5 5 5 5 0
输出应如下所示:
kt b tt mky depth
1 1 1 1 1 4
2 2 2 2 2 2
我试过:
df.loc[(df!=0).any(axis=1)]
但只有当行的所有对应列都为0时,它才会删除该行。如果确实接近,则需要检查每行的所有
True
s:
df = df.loc[(df!=0).all(axis=1)]
print (df)
kt b tt mky depth
1 1 1 1 1 4
2 2 2 2 2 2
详细信息:
print (df!=0)
kt b tt mky depth
1 True True True True True
2 True True True True True
3 True True False True True
4 False True False False False
5 True True True True False
print ((df!=0).all(axis=1))
1 True
2 True
3 False
4 False
5 False
dtype: bool
对于掩码已更改的行,至少检查一个True
,df==0,并通过~
反转的替代解决方案:
df = df.loc[~(df==0).any(axis=1)]
可能再次复制它的@jezrael the savior:)谢谢