2016-08-18 46 views
2

我使用KNeighborsClassifier到這樣一些值進行分類:爲什麼我不能將數組賦給pandas DataFrame列?

arr = classifier_3NN.predict(testData_df) 
len(arr) 
10960 

我要分配給此陣列在數據幀的列,我已經檢查&這是相同的大小:

len(df[df['events']=='NaN']['events']) 
10960 

當我執行以下命令時,數組值不在預期的列中:

df[df['events']=='NaN']['events'] = arr 

任何人都可以看到我在做什麼錯?

回答

1

我認爲你需要isnullix檢查NaN值:

df.ix[df['events'].isnull(), 'events'] = arr 

但如果需要通過arr更好的替代NaN值是使用fillnaarr創建Series

arr = [5,7,9] 

df = pd.DataFrame({'events':[np.nan, 1, np.nan]}) 
print (df) 
    events 
0  NaN 
1  1.0 
2  NaN 

df['events'] = df['events'].fillna(pd.Series(arr, index=df.index)) 
print (df) 
    events 
0  5.0 
1  1.0 
2  9.0 
+0

所以你需要用'arr'替換'df ['events']'中的'NaN'值? – jezrael

相關問題