我有一个数据集,包括user ID
,item ID
(两个字符串)和类似的评分:
A12VH45Q3H5R5I B000NWJTKW 5.0
A3J8AQWNNI3WSN B000NWJTKW 4.0
A1XOBWIL4MILVM B000NWJTKW 1.0
我想将ID
更改为整数,如:
1 1 5.0
2 1 4.0
3 1 1.0
我尝试了一种传统方式,创建一个大字典并用整数字标记每个字符串ID。但是花了很长时间。那么请你告诉我如何以更快的方式完成它?提前谢谢。
答案 0 :(得分:1)
您可以apply
factorize
:
In [244]:
df[[0,1]] = df[[0,1]].apply(lambda x: pd.factorize(x)[0] + 1)
df
Out[244]:
0 1 2
0 1 1 5
1 2 1 4
2 3 1 1
答案 1 :(得分:1)
您还可以将列编码为categorical,然后获取代码。
df['User_ID_code'] = df.User_ID.astype('category').cat.codes
>>> df
User_ID Item_ID Rating User_ID_code
0 A12VH45Q3H5R5I B000NWJTKW 5 0
1 A3J8AQWNNI3WSN B000NWJTKW 4 2
2 A1XOBWIL4MILVM B000NWJTKW 1 1