我有一堆数据框,其中一个分类列定义了性别(M/F)。我想将整数 1 分配给男性,将 2 分配给女性。我有以下代码 cat 将它们编码为 0 和 1df4["Sex"] = df4["Sex"].astype('category')df4.dtypesdf4["Sex_cat"] = df4["Sex"].cat.codesdf4.head() 但我特别需要让 M 为 1,F 为 2。有没有一种简单的方法可以将特定整数分配给类别?
3 回答

HUH函数
TA贡献1836条经验 获得超4个赞
如果您需要强加特定的顺序,您可以使用pd.Categorical
:
c = pd.Categorical(df["Sex"], categories=['M','F'], ordered=True)
这确保“M”被赋予最小值,“F”次之,依此类推。然后,您只需访问codes
并添加 1。
df['Sex_cat'] = c.codes + 1
这是更好地使用pd.Categorical
比astype('category')
如果你想在什么类别被指定什么代码更好的控制。

料青山看我应如是
TA贡献1772条经验 获得超8个赞
您还可以将 lambda 与 apply 结合使用:
df4['sex'] = df4['sex'].apply(lambda x : 1 if x=='M' else 2)
添加回答
举报
0/150
提交
取消