我有一个看起来像这样的数据框
ID Color
A red
B green
C red
D yellow
我通过创建字典将颜色枚举为数字:
color_list = ['red', 'green', 'yellow']
colors = dict(enumerate(color_list))
现在,如何使用颜色ID替换列值,以便数据框如下所示:
ID Color
A 1
B 2
C 1
D 3
编辑:作为后续问题,如果我在Spark RDD中拥有相同的数据,我将如何在Scala中处理它?</ p>
答案 0 :(得分:2)
df['Color'] = pd.factorize(df['Color'])[0]
演示:
In [19]: df
Out[19]:
ID Color
0 A red
1 B green
2 C red
3 D yellow
In [20]: df['Color'] = pd.factorize(df['Color'])[0]
In [21]: df
Out[21]:
ID Color
0 A 0
1 B 1
2 C 0
3 D 2
或者,我们可以将Code
列转换为分类dtype:
In [24]: df['Color'] = df['Color'].astype('category')
In [25]: df
Out[25]:
ID Color
0 A red
1 B green
2 C red
3 D yellow
In [26]: df.dtypes
Out[26]:
ID object
Color category # <----------
dtype: object
我们可以使用分类代码(数字):
In [27]: df.Color.cat.codes
Out[27]:
0 1
1 0
2 1
3 2
dtype: int8