假设给出了一个水果柱,我有57个香蕉,54个苹果和其他Null值。
现在我想用fillna
填充空值,其概率为57 /(57 + 54)概率为banana,54 /(57 + 54)为apple,我该怎么做?
Fruit
------
None
Banana
Fruit
Banana
....(with 57 banana, 54 apple, 10 None)
答案 0 :(得分:5)
设置
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.choice
和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())