我不知道說“標準化”分類變數字串是否正確,但基本上我想創建一個函式來將下面列中的所有觀察值 F 或 f 設定為 0 并將 M 或 m 設定為 1:
> df['gender']
gender
f
F
f
M
M
m
我試過這個:
def padroniza_genero(x):
if(x == 'f' or x == 'F'):
replace(['f', 'F'], 0)
else:
replace(1)
df1['gender'] = df1['gender'].apply(padroniza_genero)
但我得到一個錯誤:
NameError: name 'replace' is not defined
有任何想法嗎?謝謝!
uj5u.com熱心網友回復:
replace您的代碼中沒有定義函式。
回到你的目標,使用向量函式。
轉換為 lower 并映射 f->0, m->1:
df['gender_num'] = df['gender'].str.lower().map({'f': 0, 'm': 1})
或者使用比較(不等于 f)和從布爾到整數的轉換:
df['gender_num'] = df['gender'].str.lower().ne('f').astype(int)
輸出:
gender gender_num
0 f 0
1 F 0
2 f 0
3 M 1
4 M 1
5 m 1
概括
您可以使用pandas.factorize. 優點:你會得到一個真實的Categorical型別。
注意。數值的設定取決于首先出現的任何值,或字典順序,如果sort=True:
s, key = pd.factorize(df['gender'].str.lower(), sort=True)
df['gender_num'] = s
key = dict(enumerate(key))
# {0: 'f', 1: 'm'}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/448640.html
