如何使用pandas快速将数据框中的字符串更改为整数ID?

4

我有一个数据集,其中包括用户ID物品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。但这需要非常长的时间。所以请问您如何以更快的方式完成它?提前感谢。

2个回答

3
你可以将该列编码为分类变量,然后获取代码。
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

每次都会给相同的User_ID分配相同的User_ID_code吗? - mohamad.zamani

2
您可以使用factorize函数进行应用: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

我也想知道是否可以以类似的方式获取用户和项目的数量? - user5779223
你是在询问 df.apply(pd.Series.value_counts) 吗? - EdChum
实际上,我的意思是用户数量而不是用户出现次数。我想知道数据集中有多少个唯一的用户。 - user5779223

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接