【发布时间】:2014-11-15 18:58:26
【问题描述】:
我有一个系列中的分类变量。我想为每个唯一值分配整数 id 并使用 id 创建一个新系列,有效地将字符串变量转换为整数变量。最紧凑/最有效的方法是什么?
【问题讨论】:
我有一个系列中的分类变量。我想为每个唯一值分配整数 id 并使用 id 创建一个新系列,有效地将字符串变量转换为整数变量。最紧凑/最有效的方法是什么?
【问题讨论】:
你可以使用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])
【讨论】:
在 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
【讨论】: