当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Pandas factorize方法用法及代码示例


Pandas factorize(~) 方法返回以下内容:

  • 整数索引数组,用于将输入数组映射到唯一值。

  • 输入数组的所有唯一值。

参数

1. values | sequence

一维值序列。

2. sort | boolean | optional

是否对唯一值的结果数组进行排序。默认情况下,sort=False

3. na_sentinel | int | optional

在整数索引数组中标记 NaN 的值。默认情况下,na_sentinel=-1

返回值

返回以下两个NumPy数组:

  • 整数索引数组,将输入数组映射到唯一值数组。

  • 包含输入数组的唯一值的数组。

例子

基本用法

codes, uniques = pd.factorize(["B", "A", "A", "C", "B"])
print("codes:", codes)
print("uniques:", uniques)



codes: [0 1 1 2 0]
uniques: ['B' 'A' 'C']

请注意以下事项:

  • codes 数组将输入数组中的值映射到 uniques 数组。

  • 唯一值按照它们在输入数组中出现的顺序进行排序。

您可以使用 codesuniques 重新创建输入数组,如下所示:

uniques[codes]



array(['B', 'A', 'A', 'C', 'B'], dtype=object)

指定排序

默认情况下, sort=False ,这意味着返回的唯一值数组未排序。

要对唯一值数组进行排序,请像这样设置sort=True

codes, uniques = pd.factorize(["B", "A", "A", "C", "B"], sort=True)
print("codes:", codes)
print("uniques:", uniques)



codes: [1 0 0 2 1]
uniques: ['A' 'B' 'C']

请注意 uniques 的排序方式,codes 数组也反映了这一点。

指定na_sentinel

默认情况下,NaN 值在 codes 数组中标记为 -1

codes, uniques = pd.factorize(["B", np.NaN, "A", "C", "B"])
print("codes:", codes)
print("uniques:", uniques)



codes: [ 0 -1  1  2  0]
uniques: ['B' 'A' 'C']

我们可以通过传入 na_sentinel 来选择自己的值,如下所示:

codes, uniques = pd.factorize(["B", np.NaN, "A", "C", "B"], na_sentinel=50)
print("codes:", codes)
print("uniques:", uniques)



codes: [ 0 50  1  2  0]
uniques: ['B' 'A' 'C']

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas | factorize method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。