如何为分类值生成字典

时间:2017-03-03 22:31:17

标签: python pandas dictionary data-cleaning

我有一个像下面这样的pandas数据框

df.wlan_mgt_fixed_reason_code.unique()
= array(['?', '0x0002', '0x0003', ..., '0x0c3c', '0xbf17', '0x4cee'], dtype=object) 

我需要用唯一的数字替换这些唯一值,因为我想通过ANN运行数据。

我需要从唯一值中创建一个字典,以便我可以用以下方式替换它们。

di = 
{
 "0x0002" : 2, 
 "0x0003" : 3, 
 "0x0001" : 4, 
 "0x0006" : 5, 
 "0x0007" : 6, 
 "0x0008" : 7, 
 "0x944f" : 8, 
 "0xda64" : 9, 
 "0x7415" : 10, 
 "0x64d7" : 11, 
 "0x130d" : 12, 
 "0x39a1" : 13, 
 "0x5df0" : 14, 
 "0xc87e" : 15, 
 "0x744f" : 16, 
 "0x7983" : 17, 
 "0x0632" : 18, 
 "0x3922" : 19, 
 "0x2c60" : 20, 
 "0xa5d9" : 21, 
 "0x02b8" : 22, 
 "0x71c4" : 23, 
 "0x0c3c" : 24, 
 "0xbf17" : 25, 
 "0x4cee" : 1, 
}

然后用字典值替换列。

是否有一种简单的方法可以自动执行此操作,或者是一个自动识别唯一分类值并使用序号替换它们的代码段。

1 个答案:

答案 0 :(得分:0)

尝试categorical

df.wlan_mgt_fixed_reason_code = df.wlan_mgt_fixed_reason_code.astype('category')

这样说数据类型仍然很新,这意味着你可能想要坚持使用标准的矢量化器:

uniqs = list(df.wlan_mgt_fixed_reason_code.unique())
uniq_dict = {uniqs[x]: x for x in range(len(uniqs))}
df.wlan_mgt_fixed_reason_code = df.wlan_mgt_fixed_reason_code.replace(uniq_dict)