我有一張這樣的桌子:
| 性別 | 施根德 |
|---|---|
| 米 | 男孩們 |
| F | 女孩們 |
| NaN | 混合 |
| NaN | 男孩們 |
我想填充這個表中的 NaNs 值(有 10000 個)。SchGend 告訴我們學校是只招收男生,只招收女生,還是兩者兼而有之。因此,為了填充第 4 行,我想把 M 作為性別,但是為了填充混合學校的 NaN,我想用隨機值來做。我不知道如何在熊貓的 fillna 方法中設定條件。
所以這就是我的問題:我該怎么做?有小費嗎?
uj5u.com熱心網友回復:
首先,填寫學校資訊中已知值的值。然后隨機填充剩余的。您可以使用random.choices,以產生“M”和“F”的隨機序列(應該有替代功能numpy.random,如果你喜歡)。
如果您運行以下命令,您將獲得第三條記錄的不同結果。
from io import StringIO
import random
import pandas as pd
data = """
Sex SchGend
M Boys
F Girls
NaN Mixed
NaN Boys
"""
x = pd.read_csv(StringIO(data), sep="\t")
# fill cases of boys or girls school
x.loc[x.SchGend == "Boys", "Sex"] = "M"
x.loc[x.SchGend == "Girls", "Sex"] = "F"
num_na = x.Sex.isna().sum() # number of missing cases
x.loc[x.Sex.isna(), "Sex"] = random.choices(["M", "F"], k=num_na)
x
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/336089.html
上一篇:我可以使用正則運算式在第一次匹配時拆分Pandas資料框列嗎?
下一篇:僅附加來自第二個資料幀的唯一行
