如果行中的任何值等于零,如何删除行?
我通常会将df.dropna()用于NaN值,但不确定如何使用" 0"值。
答案 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