2015-10-26 52 views
2

我知道这个问题之前已经提过很多次了,但是我发现的所有解决方案似乎都不适合我。我无法从我的pandas Series或DataFrame中删除NaN值。无法从熊猫系列中删除NaN

首先,我试图直接从数据帧等中的I/O 7和8(http://pandas.pydata.org/pandas-docs/stable/missing_data.html

In[1]: 
df['salary'][:5] 
Out[1]: 
0 365788 
1 267102 
2 170941 
3  NaN 
4 243293 

In [2]: 
pd.isnull(df['salary'][:5]) 
Out[2]: 
0 False 
1 False 
2 False 
3 False 
4 False 

我期待3行至显示为真文档中去除,但它没有。我从DataFrame中删除了该系列以再次尝试。

sal = df['salary'][:5] 

In [100]: 
type(sals) 
Out[100]: 
pandas.core.series.Series 

In [101]:  
sal.isnull() 
Out[101]: 
0 False 
1 False 
2 False 
3 False 
4 False 
Name: salary, dtype: bool 

In [102]:  
sal.dropna() 
Out[102]: 
0 365788 
1 267102 
2 170941 
3  NaN 
4 243293 
Name: salary, dtype: object 

有人能告诉我我做错了什么吗?我正在使用IPython Notebook 2.2.0。

回答

4

你列的数据类型是object,它告诉我它可能包含字符串而不是数值。尝试转换为浮点数:

>>> sa1 = pd.Series(["365788", "267102", "170941", "NaN", "243293"]) 
>>> sa1 
0 365788 
1 267102 
2 170941 
3  NaN 
4 243293 
dtype: object 

>>> sa1.isnull() 
0 False 
1 False 
2 False 
3 False 
4 False 
dtype: bool 

>>> sa1 = sa1.astype(float) 
>>> sa1.isnull() 
0 False 
1 False 
2 False 
3  True 
4 False 
dtype: bool