2017-09-16 55 views
1

我試圖在數據框df中推測缺失值。我有一個列A與300 NaN's。我想隨機設置它的2/3到value1,其餘的到value2在列中隨機設置na的三分之一爲一個值,其餘值爲另一個值

請幫忙。

編輯:我實際上試圖在dask上,這不支持項目分配。這是我目前的。起初,我以爲我會盡力把所有NA'svalue1

da.where(df.A.isnull() == True, 'value1', df.A) 

我得到了以下錯誤:

ValueError: need more than 0 values to unpack 
+0

你有沒有試過[Series.where](http://dask.pydata.org/en/latest/dataframe-api.html#dask.dataframe.Series.where)? – MRocklin

回答

0

由於意見建議,你可以用Series.where解決這個問題。

下面的工作,但我不能保證這是多高效。 (我懷疑它可能是更好一下子產生替代的一整列與numpy.choice

df['A'] = d['A'].where(~d['A'].isnull(), 
    lambda df: df.map(
     lambda x: random.choice(['value1', 'value1', x]))) 

解釋:如果該值不爲空(NAN),肯定保持原來的。如果它爲null,則用第一個lambda生成的數據幀的相應值進行替換。這映射數據框(塊)的值,以隨機選擇1/3的原始值和其他值的'值1'。

請注意,根據您的數據,這可能會改變列的數據類型。

相關問題