我有一个 Pandas 系列,例如:
0 bar
1 foo
2 bar
3 bar
4 bar
5 foo
我想根据指定顺序的 numpy 数组将此系列映射到另一个系列,[bar, foo]
。那么结果应该是:
0 0
1 1
2 0
3 0
4 0
5 1
我怎样才能做到这一点?
背景:我有一个 sklearn 学习器,它将分类目标内部映射到具有原始类顺序的 learner.classes_
numpy 数组。我正在尝试实现一些额外的方法,我需要使用这些 classes_
将它们的输入(上面的输入系列)映射到每个类的索引,因为这是学习器内部使用的内容.
最佳答案
您可以使用Categorical Data通过列表指定自定义排序。可以通过 pd.Series.cat.codes
转换为代码:
df = pd.DataFrame({'s': ['bar', 'foo', 'bar', 'bar', 'bar', 'foo']})
orderList = ['bar', 'foo']
df['s'] = pd.Categorical(df['s'], categories=orderList, ordered=True)
df['s'] = df['s'].cat.codes
print(df)
s
0 0
1 1
2 0
3 0
4 0
5 1
关于python - 使用另一个数组中的索引位置映射 Pandas 系列字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51205373/