将pandas系列从字符串转换为唯一的int id

时间:2014-09-21 20:16:51

标签: python pandas

我在一个系列中有一个分类变量。我想为每个唯一值分配整数id并使用id创建一个新系列,有效地将字符串变量转换为整数变量。什么是最紧凑/有效的方法?

2 个答案:

答案 0 :(得分:21)

您可以使用pandas.factorize

In [32]: s = pd.Series(['a','b','c'])

In [33]: labels, levels = pd.factorize(s)

In [35]: labels
Out[35]: array([0, 1, 2])

答案 1 :(得分:10)

在pandas 0.15 +

中使用新的pandas categorical类型的示例

http://pandas.pydata.org/pandas-docs/version/0.16.2/categorical.html

In [553]: x = pd.Series(['a', 'a', 'a', 'b', 'b', 'c']).astype('category')

In [554]: x
Out[554]: 
0    a
1    a
2    a
3    b
4    b
5    c
dtype: category
Categories (3, object): [
                        a
                        , b
                        , c]

In [555]: x.cat.codes
Out[555]: 
0    0
1    0
2    0
3    1
4    1
5    2
dtype: int8