这可能是一个重复的问题,因为我找不到有解释的问题。
我有一个数据框,我想删除所有具有 999.9 值的行。但不知何故做不到。
df1 = pd.DataFrame({'a':[999.9,999.9,1,3,2], 'b':[999.9,1,999.9,1, 2]})
df1 = df1.loc[(df1 != 999.9).any(1)]
print(df1)
在这种情况下,我想删除第一行和第二行。
尝试:
df1 = pd.DataFrame({'a':[999.9,999.9,1,3,2], 'b':[999.9,1,999.9,1, 2]})
print(df1[~(df1==999.9).any(axis=1)])
输出:
a b
3 3.0 1.0
4 2.0 2.0
您签df1 != 999.9
入此检查仅删除第一行,因为对于其他行,您有该列!= 999.9
。
试试这个:
>>> mask = (df1 == 999.9).any(1)
>>> df1[~mask]
# for more explanation
>>> df1 == 999.9
a b
0 True True
1 True False
2 False True
3 False False
4 False False
在您的解决方案中:
>>> (df1 != 999.9)
a b
0 False False
1 False True
2 True False
3 True True
4 True True
>>> (df1 != 999.9).any(axis = 1) # for check rows
0 False
1 True
2 True
3 True
4 True
dtype: bool
>>> (df1 != 999.9).any(axis = 0) # for check columns
a True
b True
dtype: bool