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)
现在如何从上面的代码返回原始分类值?
类别映射由 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)
使用此方法时要小心。确保在转换为类别后立即创建词典。将数据帧与分类系列连接时,您可能会发现映射发生变化。