Python:字符串到整数作为键

时间:2017-01-05 09:22:19

标签: python pandas

我试图将数据框中的字符串列转换为int。字符串应该用整数替换为键值。

数据:

user_id site_id 
100     url1.com 
100     url2.com 
100     url1.com 
101     url2.com 
101     url2.com 
101     url2.com

通缉输出:

user_id site_id 
100     1 
100     2 
100     1 
101     2 
101     2 
101     2

我试图通过以下方式获取所有唯一网址:

names = pd.unique(df.site_id.ravel()) 
urls = pd.Series(np.arange(len(names)), names) 

然后

df["site_id"] = df.applymapp(urls.get)

1 个答案:

答案 0 :(得分:1)

您希望factorize将值编码为整数:

In [52]:
df['site_id'] = pd.factorize(df['site_id'])[0] + 1
df

Out[52]:
   user_id  site_id
0      100        1
1      100        2
2      100        1
3      101        2
4      101        2
5      101        2

此处factorize返回一个数组:

In [53]:
pd.factorize(df['site_id'])

Out[53]:
(array([0, 1, 0, 1, 1, 1], dtype=int64), Int64Index([1, 2], dtype='int64'))

我们想要元组中的编码值,并为每个元素添加1

pd.factorize(df['site_id'])[0] + 1