2015-09-04 103 views
0

我有一個帶有foll的熊貓系列。 value_counts輸出():熊貓系列以numpy陣列轉換錯誤

NaN  2741 
197 1891 
127  188 
194  42 
195  24 
122  21 

當我進行描述()在這個系列中,我得到:

df[col_name].describe() 
count 2738.000000 
mean  172.182250 
std  47.387496 
min   0.000000 
25%  171.250000 
50%  197.000000 
75%  197.000000 
max  197.000000 
Name: SS_D_1, dtype: float64 

但是,如果我試圖找到最小和最大的,我得到楠的回答:

numpy.min(df[col_name].values) 
nan 

此外,當我嘗試t將其轉換爲numpy的陣列,我似乎得到,只有男的

數組

關於如何從熊貓系列轉換爲numpy的陣列成功地

+1

'df [col_name] .values'將返回numpy數組。如果數據中有NaN,它將使用numpy.min函數傳播。意思是如果有NaN,np.min將始終產生NaN作爲激怒。嘗試nanmin http://docs.scipy.org/doc/numpy/reference/generated/numpy.nanmin.html#numpy.nanmin –

+1

包含'nan'的任何數組的'min'也是'nan'。要忽略'nan'值,請嘗試'np.nanmin(df [col_name] .values)'(或者只是'df [col_name] .min()')。 –

+0

謝謝,但我也得到了一個nan:numpy.array(df [col_name])。min() – user308827

回答

2

兩者功能np.min和方法np.ndarray.min將始終返回的NaN對於包含一個或多個NaN值的任何陣列的任何建議(這是標準IEE754浮點行爲)。

你可以使用np.nanmin,計算分鐘時忽略NaN值,如:

np.nanmin(df[col_name].values) 

一個更簡單的選擇就是使用pd.Series.min()方法,已經忽略了NaN值,即:

df[col_name].min() 

我不知道爲什麼numpy.array(df[col_name])會返回一個只包含NaN的數組,除非df[col_name]已經只包含NaN開頭。我認爲這一定是由於代碼中的其他錯誤造成的。