没有
replace
在代码中定义的函数。
回到你的目标,使用向量函数。
转换到下方并映射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'}