python - 是否可以在 Pandas 因式分解方法中指定级别的顺序?

标签 python numpy pandas

我正在使用 pandas 来分解由两种类型的字符串组成的数组。我想确保其中一个字符串“XYZ”始终编码为 0,另一个字符串“ABC”始终编码为 1。

可以这样做吗?我查了文档,没有发现任何有用的东西?

最佳答案

这是Categorical的目的,即(可选)在分解时指定实际类别(以及在需要时指定排序)。类别的排序将决定因式分解的顺序。如果未指定,则出现顺序将是类别的顺序。

这需要 0.16.0 才能直接在 .astype 中指定类别; Categoricals 在 0.15.0 中引入

In [10]: s = Series(list('aaabbaa')).astype('category',categories=list('ab'))

In [11]: s.cat.codes
Out[11]: 
0    0
1    0
2    0
3    1
4    1
5    0
6    0
dtype: int8

由于我们现在的类别为“b”、“a”,因此代码与上面相反。

In [12]: s = Series(list('aaabbaa')).astype('category',categories=list('ba'))

In [13]: s.cat.codes
Out[13]: 
0    1
1    1
2    1
3    0
4    0
5    1
6    1
dtype: int8

关于python - 是否可以在 Pandas 因式分解方法中指定级别的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30835379/

相关文章:

python - NumPy:对每个 ndarray 元素执行函数

python - Pandas:根据列数据合并或连接数据框?

python - 如何在 Pandas 中同时突出显示一行和一列

python - Flask-sqlalchemy 禁用整个 session 的自动刷新

Python ctypes如何读取C代码修改的字符串

python - 消息对话框未关闭

Numpy:如何通过列向量选择二维数组中的行条目

python - Python在cv2.Rodrigues计算期间的结果更改

python - 将每小时的 Pandas 系列截断为全天

python - 如何在pygame中控制单个子弹