你可以使用的東西,像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