在Pandas中将分类变量重新编码为整数

时间:2014-01-10 22:07:19

标签: python pandas

我已经向R提出了这个问题,但我现在正试图在熊猫中做到这一点。我正在尝试使用pandas将分类变量重新编码为整数。给出:

group
 005j         
 005j         
 0k16         
 0fff       
 0fff

我想得到一系列代表相同分组的递增整数:

group   intCode
 005j      1   
 005j      1   
 0k16      2   
 0fff      3 
 0fff      3

3 个答案:

答案 0 :(得分:7)

In [10]: df['intCode'] = pd.Categorical.from_array(df.group).labels

In [11]: df
Out[11]: 
  group  intCode
0  005j        0
1  005j        0
2  0k16        2
3  0fff        1
4  0fff        1

答案 1 :(得分:2)

只需提供@herrfz答案的更新版本。 Categorical.from_arraylabels已弃用。

df['intCode'] = pd.Categorical(df.group).codes

对我运行Python 3.6.9有用

答案 2 :(得分:1)

您可以获得唯一值

>>> df = pd.read_clipboard()
>>> groups = df['group'].unique()

索引他们

>>> groups = pd.DataFrame(groups, columns=['group']).reset_index()

然后合并(添加1从1开始而不是0):

>>> groups['index'] += 1
>>> df.merge(groups)
  group  index
0  005j      1
1  005j      1
2  0k16      2
3  0fff      3
4  0fff      3

[5 rows x 2 columns]