當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。