我试图将数据框中的字符串列转换为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)
答案 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