2017-01-24 6 views
0

Sagen Sie, dass eine Spalte Obst, ich habe 57 Bananen, 54 Apfel und andere Null-Werte. Nun möchte ich den Nullwert mit fillna mit der Wahrscheinlichkeit von 57/(57 + 54) Wahrscheinlichkeit als Banane, und 54/(57 + 54) als Apfel, wie soll ich es tun?Füllen fehlenden Wert mit Wahrscheinlichkeiten

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

Können Sie Probe und gewünschten Ausgang hinzufügen? – jezrael

Antwort

4

Setup

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

Verwendung pd.Series.sample

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

mit np.random.choice und np.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()) 
Verwandte Themen