你可以使用的东西,像NumPy这样的random.choice
开始使用piRSquared的小费在评论 帧适合您的描述
import numpy as np
import pandas as pd
print(df)
id signup
0 1 mac
1 2 mac
2 3 mac
3 4 other
4 5 other
5 6 windows
6 7 windows
7 8 windows
8 9 windows
9 10 NaN
10 11 NaN
11 12 NaN
12 13 NaN
13 14 NaN
更新搞清楚的电流分布
s = df.signup.value_counts(normalize=True)
print(s)
windows 0.444444
mac 0.333333
other 0.222222
Name: signup, dtype: float64
我们将在f旁边使用布尔索引ilter由我们想要更新的nans。此外,这是我们通过传递索引(窗口,mac,其他),所需大小以及每个注册的分布将用于概率(p)参数的随机选择的地方。
missing = df['signup'].isnull()
df.loc[missing,'signup'] = np.random.choice(s.index, size=len(df[missing]),p=s.values)
print(df)
id signup
0 1 mac
1 2 mac
2 3 mac
3 4 other
4 5 other
5 6 windows
6 7 windows
7 8 windows
8 9 windows
9 10 windows
10 11 windows
11 12 mac
12 13 windows
13 14 other
好像我们不明白的问题,以同样的方式,他的注册列是一个与NaN值? –
感谢鲍勃。这很有帮助。 – user4943236
'df.signup.value_counts(normalize = True)' – piRSquared