熊猫 - 将字符串更改为数字

时间:2016-01-15 16:02:46

标签: python pandas dataframe

我有一个包含大量电子邮件的数据集,我希望对此进行更改:

df = pd.DataFrame( [('aatest@gmail.com', 0, 3.0), ('aatest@gmail.com', 1, 2.0), 
                    ('aatest@gmail.com', 1 ,3.0), ('bbtest@gmail.com', 1, 1.0), 
                    ('cctest@gmail.com', 2, 5.0)]) 

df
0  aatest@gmail.com  0  3
1  aatest@gmail.com  1  2
2  aatest@gmail.com  1  3
3  bbtest@gmail.com  1  1
4  cctest@gmail.com  2  5

到此:

df2 = pd.DataFrame(
[(0, 0, 3.0), (0, 1, 2.0), (0,1 ,3.0), (1, 1, 1.0), (2, 2, 5.0)])

df2
   0  1  2
0  0  0  3
1  0  1  2
2  0  1  3
3  1  1  1
4  2  2  5

,即将电子邮件更改为一个号码,但相同的电子邮件保留为相同的号码

我该怎么做?

1 个答案:

答案 0 :(得分:1)

使用factorize

df[0] = pd.factorize(df[0])[0]

print df

   0  1  2
0  0  0  3
1  0  1  2
2  0  1  3
3  1  1  1
4  2  2  5

rank

df[0] = df[0].rank(method='dense') - 1
print df

   0  1  2
0  0  0  3
1  0  1  2
2  0  1  3
3  1  1  1
4  2  2  5