考虑 pandas dataFrame 中的分类变量,其中一些条目是 NaN 值,例如
User Name
1 Joe
2 nan
3 Joe
4 Mark
5 nan
6 Joe
我想用用户定义的函数替换 nan 值,该函数保留名称的频率,即分别为 ['Joe', 'Mark'] 分配权重 [0.75, 0.25]。这可以使用 random.choices 轻松完成,如何使用 pandas 将值插入到 dataFrame 中?
最佳答案
value_counts
使用 normalize=True
获取权重,然后使用 loc
设置空值
import numpy as np
p = df.Name.value_counts(normalize=True) # Series of probabilities
m = df.Name.isnull()
np.random.seed(42)
rand_fill = np.random.choice(p.index, size=m.sum(), p=p)
#array(['Joe', 'Mark'], dtype=object)
df.loc[m, 'Name'] = rand_fill
<小时/>
# User Name
#0 1 Joe
#1 2 Joe
#2 3 Joe
#3 4 Mark
#4 5 Mark
#5 6 Joe
关于python - 将 nan 值替换为分类变量中用户定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57577188/