我正在使用 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/