为什么我不能将数组分配给pandas DataFrame列?

时间:2016-08-18 07:09:58

标签: python arrays pandas numpy

我正在使用KNeighborsClassifier对某些值进行分类:

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

我想将此数组分配给DataFrame中的一列,我已检查过&它的大小相同:

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

当我执行以下命令时,数组值不在预期的列中:

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

任何人都可以看到我做错了吗?

1 个答案:

答案 0 :(得分:1)

我认为您需要isnull才能使用ix检查NaN值:

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

但是,如果需要NaN更改arr值更好,请使用Series arr创建的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

struct strlist {
    char * const data;
    struct strlist *next;
}