2015-10-26 45 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