2017-01-24 70 views
0

說一個列的水果,我有57個香蕉,54個蘋果,和其他空值。 現在我想用fillna填充空值,其概率爲57 /(57 + 54)概率爲香蕉,54 /(57 + 54)爲蘋果,我應該怎麼做?用概率填寫缺失值

Fruit 
------ 
None 
Banana 
Fruit 
Banana 
....(with 57 banana, 54 apple, 10 None) 
+0

你能加樣品及所需的輸出? – jezrael

回答

4

設置

fruit = pd.Series(['banana'] * 57 + ['apple'] * 54 + [None] * 10, name='fruit') 

使用pd.Series.sample

nullfruit = fruit.isnull() 
fruit.loc[nullfruit] = fruit.dropna().sample(nullfruit.sum()).values 

使用np.random.choicenp.unique

nullfruit = fruit.isnull().values 
u, c = np.unique(fruit.values[~nullfruit], return_counts=1) 

fruit.loc[nullfruit] = np.random.choice(u, nullfruit.sum(), p=c/c.sum())