我有一个pandas DataFrame,其中包含行的NaN
值
import pandas as pd
import numpy as np
df = pd.DataFrame(data)
df
one two three four five
a 0.469112 -0.282863 -1.509059 bar True
b NaN 1.224234 7.823421 bar False
c -1.135632 1.212112 -0.173215 bar False
d NaN NaN NaN NaN True
e 0.119209 -1.044236 -0.861849 bar True
f -2.104569 -0.494929 1.071804 bar False
我可以使用NaN
df.dropna()
个值
但是,我只删除某些行。例如,如果NaN
列为one
,则应删除该行。
我的解决方案是创建一个新的DataFrame
df[df.one != 'Nan']
怎么办呢?
答案 0 :(得分:2)
使用loc
并传递从notnull
生成的布尔掩码:
In [107]:
df.loc[df['one'].notnull()]
Out[107]:
one two three four five
a 0.469112 -0.282863 -1.509059 bar True
c -1.135632 1.212112 -0.173215 bar False
e 0.119209 -1.044236 -0.861849 bar True
f -2.104569 -0.494929 1.071804 bar False
掩码输出:
In [109]:
df['one'].notnull()
Out[109]:
a True
b False
c True
d False
e True
f True
Name: one, dtype: bool
您无法使用NaN
或==
来比较!=
值,因为设计NaN
== NaN
是False