将分类代码转换为分类值

Convert Categorical codes to Categorical values

我有一个数据框:

ga_deviceCategory_codes ga_channelgrouping_codes    ga_sourceMedium_codes   
        1.0                         6.0                      9.0
        1.0                         6.0                      9.0    

我使用以下方法将分类值转换为分类代码:

data['ga_deviceCategory_codes'] = data['ga_deviceCategory'].astype('category').cat.codes
data['ga_channelgrouping_codes'] = data['ga_channelgrouping'].astype('category').cat.codes
data['ga_sourceMedium_codes'] = data['ga_sourceMedium'].astype('category').cat.codes

现在如何从上述代码中恢复到原始分类值?

并非 100% 满足您的要求,但您是否尝试过,例如:

data['ga_sourceMedium_codes'].cat.categories

类别映射由 Pandas 内部存储,但不作为常规 Python 字典存储。你可以自己创建这样一个字典来反向映射:

df['mycol'] = df['mycol'].astype('category')
d = dict(enumerate(df['mycol'].cat.categories))

然后向后映射:

df['mycol_codes'] = df['mycol'].cat.codes
df['mycol_reversed'] = df['mycol_codes'].map(d)

请谨慎使用此方法。确保在转换为类别后立即创建字典。将数据帧与分类序列连接时,您可能会发现映射发生变化。

您可以按如下方式进行:

df['col'] = df['col'].astype('category')
my_list = df['col'].cat.codes
my_values = df['col'].tolist()
result= dict(zip(my_list,my_values))

首先将目标列转换为 'category' 类型,然后使用 .cat.codes 对其进行标签编码。然后在代码的第 3 行中,创建了一个目标列实数值列表,并在第 4 行中通过 zip,将 cat.codes 和相关实数值实现的每个值视为字典的一个元素。