寻找: 安东尼现在等于1 约翰现在等于2 史密斯现在等于3 即使重复这个名字,这种情况仍在继续。寻找这个 1 1 2 2 3 3
代码相当长,但这里是我需要将名称转换为数字
的地方LM = frame [['Name','COMMENT']] - >名称当前是电影中的字符,我想将其更改为Numbers,以便能够通过响应变量“名称”运行SVM模型
答案 0 :(得分:1)
IIUC,您需要查看pd.factorize
或将名称转换为pd.Categorical并使用categorgy_codes。
np.random.seed(123)
df = pd.DataFrame({'Name':np.random.choice(['John','Smith','Anthony'],10)})
df['Name_Code'] = pd.factorize(df.Name)[0] + 1
df
输出:
Name Name_Code
0 Anthony 1
1 Smith 2
2 Anthony 1
3 Anthony 1
4 John 3
5 Anthony 1
6 Anthony 1
7 Smith 2
8 Anthony 1
9 Smith 2
OR
df['Name_Cat_Code'] = pd.Categorical(df.Name).codes + 1
输出:
Name Name_Code Name_Cat_Code
0 Anthony 1 1
1 Smith 2 3
2 Anthony 1 1
3 Anthony 1 1
4 John 3 2
5 Anthony 1 1
6 Anthony 1 1
7 Smith 2 3
8 Anthony 1 1
9 Smith 2 3