python - 使用另一个数组中的索引位置映射 Pandas 系列字符串

标签 python pandas series categorical-data

我有一个 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/

相关文章:

python - 如何删除 Pandas 数据帧索引的 'seconds'?

python - 带有 Python 3.5 的 Anaconda 版本

python - 日期时间转换对于数据帧来说太长

python - Pandas 合并数据框列

highcharts - 如何使用 highcharts 在工具提示中隐藏一个系列数据信息

python - 如何查找 Pandas 系列中出现特定次数的值?

带有字符串列表的 Python DataFrame 列不会展平

python - 执行以下枚举的更整洁、更 pythonic 的方法是什么?

python - Tweepy - 是否可以流式传输准确的短语?

python - 在 Pandas 中将 DataFrame 名称保存为 .csv 文件名