将更改为数字代码的分类变量转换回其原始形式

时间:2019-07-17 14:23:18

标签: python arrays dataframe

我正在创建一个推荐系统,我的数据的其中一列为'codeX'。 codeX列包括2278K,5567H,56738P等格式的产品代码。为了创建稀疏矩阵,我将codeX列转换为数字代码。 这是我用于转换的代码

`df['CodeX'] = df['CodeX'].astype("category")
 df['product_id']= df['StockCode'].cat.codes

现在,在进行所有其他相关计算并拟合模型之后,我得到了一组用户的推荐,如下所示:

结果中的每一行代表每个用户的推荐项目列表

recommendation =
array([[2733, 3145, 1019,  402, 2043],
       [2733,  886,  402,  797,  763],
       [1648, 2128, 3216,  797, 1934],
       ...,
       [2903, 1842, 1648, 1841, 1449],
       [1370, 2621,  672, 2440, 2517],
       [ 218, 2705,  809, 1813, 3087]], dtype=int32)

但是我希望我的结果包含其原始代码

array([[837Y, 73489U, ...],
       [2837B, 82381W, ...],
       ...,
       [2563Y,27487P, ...]])

我尝试使用查找,以便将值映射到其原始形式

product_lookup= train_df[['product_id','CodeX']].drop_duplicates() product_lookup['product_id']= product_lookup.product_id.astype(str)

但我仍然无法获得结果

我对python完全陌生。有人可以指导我如何以所需的格式获得结果。

1 个答案:

答案 0 :(得分:0)

df['numcode']= df['CodeX'].astype("category").cat.codes    

为什么不重新格式化现有的列,为什么不重新制作一个新列呢?这样,您可以保留原始值。另一个选择是制作字典并将输出映射到字典值。