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


Python Pandas Index get_loc方法用法及代碼示例


Pandas Index.get_loc(~) 方法返回源 Index 中給定值的位置。

參數

1. key | label

您想知道其位置的值。

2. method | Nonestring | optional

當源Index中不存在key時,如何處理這種情況:

方法

說明

None

拋出一個錯誤。

"pad""ffill"

返回前一個索引值的整數索引。

"backfill""bfill"

返回下一個索引值的整數索引。

"nearest"

返回最近索引值的整數索引。

作為tie-breaker,較大的索引值將優先。

默認情況下,method=None

警告

您的 Index 必須是單調的,否則指定 method 將引發錯誤。

3. tolerance | intfloat | optional

key 和所選索引值之間允許的最大差異:

abs(index[loc] - key) <= tolerance

僅當方法不是 None 時,這才相關。默認情況下,不設置容差。

返回值

返回類型取決於以下情況:

案子

返回類型

如果找到單個匹配項。

int

如果找到多個匹配項並且

Index 單調遞增/遞減

slice

Otherwise

布爾值的 Numpy 數組

例子

單場比賽

要獲取唯一值的整數索引:

idx = pd.Index(["a","b","c"])
idx.get_loc("c")



2

這裏,值"c"的整數索引是2

多場比賽

當索引單調時

要獲取單調 Index 中不唯一的值的整數索引:

idx = pd.Index(["a","b","c","c"])
slice = idx.get_loc("c")
slice



slice(2, 4, None)

由於idx是單調遞增的,因此這裏的返回類型是slice對象。請注意,您可以像這樣訪問 slice 的屬性:

print("start", slice.start)
print("stop", slice.stop)
print("step", slice.step)



start 2
stop 4
step None
當索引不單調時

要獲取非單調 Index 中不唯一的值的位置:

idx = pd.Index(["a","b","c","b"])
idx.get_loc("b")



array([False,  True, False,  True])

此處,返回類型是布爾值的 Numpy 數組,其中 True 指示值的存在。

指定方法

默認情況下,當 Index 中不存在提供的值時,會拋出 KeyError

idx = pd.Index([3,5,8])
idx.get_loc(6)



KeyError: 6

在這種情況下,當 Index 中不存在該值時,我們可以指定 method 來獲取相鄰值的整數索引。請注意,我們的Index必須是單調的,否則指定method將引發錯誤。

填充

method="ffill" 時,將返回前一個值的整數索引:

idx = pd.Index([3,5,8])
idx.get_loc(7, method="ffill")



1

這裏,7的先前值是5,因此返回5的整數索引。

填充

method="bfill" 時,將返回下一個值的整數索引:

idx = pd.Index([3,5,8])
idx.get_loc(6, method="bfill")



2

這裏,6的下一個值是8,因此返回8的整數索引。

最近的

method="nearest" 時,將返回最接近值的整數索引:

idx = pd.Index([3,5,8])
idx.get_loc(6, method="nearest")



1

這裏,最接近 6 的值是 5 (與 8 相反),因此返回 5 的整數索引。

指定公差

如果未找到完全匹配,則設置 tolerance 會在提供的值和選定的索引值之間施加最大可接受的差異:

idx = pd.Index([3,5,8])
idx.get_loc(6, method="nearest", tolerance=0.5)



KeyError: 6

在這裏,我們收到錯誤,因為最接近的索引值是 5 ,並且 5 和提供的值 6 之間的差異大於 0.5 的指定容差。

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas Index | get_loc method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。