pandas - 将分类映射从一个 pd.Series 分配到另一个
问题描述
我想将分类值的映射应用于从一个pd.Series
到另一个的代码。考虑这个片段:
import pandas as pd
s1 = pd.Series(['a', 'b']).astype('category')
s2 = pd.Series(['b']).astype('category')
print(s1.cat.codes)
print(s2.cat.codes)
s2.cat.set_categories(s1.cat.categories)
print(s2.cat.codes)
我期望的输出是:
0 0
1 1
dtype: int8
0 0
dtype: int8
0 1
dtype: int8
因为 ins1
'b'
映射到1
. 但我得到的是:
0 0
1 1
dtype: int8
0 0
dtype: int8
0 0
dtype: int8
为什么?那次set_categories
手术什么也没做。似乎完全没有意义...
但我怎么能真正做到这一点?
(此外,我需要将 中未出现的值映射到错误值s1
,例如。)'c'
-1
解决方案
您忘记将输出分配回s2
:
s2 = s2.cat.set_categories(s1.cat.categories)
print (s2)
0 b
dtype: category
Categories (2, object): [a, b]
print(s2.cat.codes)
0 1
dtype: int8
推荐阅读
- rhapsody - rhapsody API:如何获取多个选定元素
- sql - 如何按周显示每个未清项目
- sql - 正则表达式 - 从字符串中提取数字
- java - 无法启动 Zookeeper 服务器。没有jdk目录
- ruby-on-rails - 仅在生产中发生错误时如何调试rails应用程序?
- azure-resource-manager - Azure ARM:父资源是否仅在子资源完成后才完成?
- ruby - 将 Rails 从 5.1 升级到 5.2 后,我收到以下警告消息
- node.js - 从 Promise.then() 返回 API 响应
- spring - Spring Batch 两步一决策者
- sympy - 使用带有 xlim 和 ylim 的弧度绘制正弦函数