猿问

将分类列转换为特定整数

我有一堆数据框,其中一个分类列定义了性别(M/F)。我想将整数 1 分配给男性,将 2 分配给女性。我有以下代码 cat 将它们编码为 0 和 1


df4["Sex"] = df4["Sex"].astype('category')

df4.dtypes

df4["Sex_cat"] = df4["Sex"].cat.codes

df4.head()  

但我特别需要让 M 为 1,F 为 2。有没有一种简单的方法可以将特定整数分配给类别?


慕的地10843
浏览 197回答 3
3回答

犯罪嫌疑人X

IUC:df4['Sex'] = df4['Sex'].map({'M':1,'F':2})现在:print(df4)将是理想的结果。

HUH函数

如果您需要强加特定的顺序,您可以使用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')如果你想在什么类别被指定什么代码更好的控制。

料青山看我应如是

您还可以将 lambda 与 apply 结合使用:df4['sex'] = df4['sex'].apply(lambda x : 1 if x=='M' else 2)
随时随地看视频慕课网APP

相关分类

Python
我要回答