Python 如果行中的任何值等于零,则在数据帧中删除行

Python 如果行中的任何值等于零,则在数据帧中删除行,python,pandas,Python,Pandas,如果行中的任何值等于零,如何删除该行 我通常会将df.dropna()用于NaN值,但不确定如何使用“0”值。我认为最简单的方法是查看所有值都不等于0的行: df[(df != 0).all(1)] 您可以创建一个布尔帧,然后使用any: >>> df = pd.DataFrame([[1,0,2],[1,2,3],[0,1,2],[4,5,6]]) >>> df 0 1 2 0 1 0 2 1 1 2 3 2 0 1 2 3

如果行中的任何值等于零,如何删除该行


我通常会将df.dropna()用于NaN值,但不确定如何使用“0”值。我认为最简单的方法是查看所有值都不等于0的行:

df[(df != 0).all(1)]

您可以创建一个布尔帧,然后使用
any

>>> df = pd.DataFrame([[1,0,2],[1,2,3],[0,1,2],[4,5,6]])
>>> df
   0  1  2
0  1  0  2
1  1  2  3
2  0  1  2
3  4  5  6
>>> df == 0
       0      1      2
0  False   True  False
1  False  False  False
2   True  False  False
3  False  False  False
>>> df = df[~(df == 0).any(axis=1)]
>>> df
   0  1  2
1  1  2  3
3  4  5  6

假设一个简单的数据帧,如下所示:

df=pd.DataFrame([1,2,0,3,4,0,9])
选取非零值,将所有零值转换为nan并删除nan值

df=df[df!=0].dropna()

df
输出:

    0
0   1.0
1   2.0
3   3.0
4   4.0
6   9.0

虽然已经很晚了,但其他人可能会觉得这很有帮助。 我也有类似的问题。但以下几点对我最有效

df =pd.read_csv(r'your file')
df =df[df['your column name'] !=0]
参考:
请参见@ikbel Benabdessaad

我之所以选择这个答案,是因为它在编码方面是最有效的,但这两个答案似乎都是准确的。如果我们只想关注其中一列(或一组列),请认为这是最清晰的。