将Dataframe中的重复名称转换为单个值

时间:2017-11-14 01:03:22

标签: python

寻找: 安东尼现在等于1 约翰现在等于2 史密斯现在等于3 即使重复这个名字,这种情况仍在继续。寻找这个 1 1 2 2 3 3

代码相当长,但这里是我需要将名称转换为数字

的地方

LM = frame [['Name','COMMENT']] - >名称当前是电影中的字符,我想将其更改为Numbers,以便能够通过响应变量“名称”运行SVM模型

1 个答案:

答案 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