将分类代码转换为分类值

use*_*111 2 python dictionary dataframe pandas categorical-data

我有一个数据框:

ga_deviceCategory_codes ga_channelgrouping_codes    ga_sourceMedium_codes   
        1.0                         6.0                      9.0
        1.0                         6.0                      9.0    
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

现在如何从上面的代码返回原始分类值?

jpp*_*jpp 8

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

df['mycol'] = df['mycol'].astype('category')
d = dict(enumerate(df['mycol'].cat.categories))
Run Code Online (Sandbox Code Playgroud)

然后向后映射:

df['mycol_codes'] = df['mycol'].cat.codes
df['mycol_reversed'] = df['mycol_codes'].map(d)
Run Code Online (Sandbox Code Playgroud)

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