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

时间:2014-11-19 15:14:37

标签: python pandas

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

我通常会将df.dropna()用于NaN值,但不确定如何使用" 0"值。

4 个答案:

答案 0 :(得分:20)

我认为最简单的方法是查看所有值不等于0的行:

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

答案 1 :(得分:13)

你可以制作一个布尔框架,然后使用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

答案 2 :(得分:12)

尽管已经很晚了,但是其他人可能会觉得很有帮助。 我有类似的问题。但是以下内容最适合我。

df =pd.read_csv(r'your file')
df =df[df['your column name'] !=0]

参考: Drop rows with all zeros in pandas data frame 看到@ikbel benabdessamad

答案 3 :(得分:0)

假设一个简单的DataFrame如下:

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