首頁 >後端開發 >Python教學 >pandas 的 DataFrame 選擇的 `loc` 和 `iloc` 有什麼不同?

pandas 的 DataFrame 選擇的 `loc` 和 `iloc` 有什麼不同?

DDD
DDD原創
2024-12-22 00:27:40794瀏覽

What's the Difference Between pandas' `loc` and `iloc` for DataFrame Selection?

iloc 和 loc 有什麼不同?

在 Python 的 pandas 函式庫中,loc 和 iloc 函式用於對 DataFrame 進行切片。雖然它們有一些相似之處,但它們的主要目的和基本機制存在顯著差異。

loc 與iloc:基於標籤與基於位置的選擇

loc基於標籤進行操作,標籤是與行或列關聯的索引值。它透過將行(或列)的標籤與指定的選擇標準相匹配來檢索行(或列)。例如,df.loc[:5] 將傳回 DataFrame 的前五行,其中標籤按升序排列。

iloc 另一方面,基於整數位置。它根據行(或列)在 DataFrame 中的位置來選擇行(或列)。例如,df.iloc[:5] 也會傳回前五行,但其選擇是基於序數位置(從 0 開始的索引)。

說明區別的範例

考慮以下具有非單調索引的DataFrame:

s = pd.Series(list("abcdef"), index=[49, 48, 47, 0, 1, 2]) 

使用loc 和iloc 檢索前五個元素:

s.loc[:5]   # row by row label (inclusive)
s.iloc[:5]  # row by row location (exclusive)

結果不同:

  • s.loc[:5]傳回索引標籤為0 到5(含)的行,結果是:
0    d
1    e
2    f
  • s.iloc[:5] 傳回位置0 到4 的行(獨家),導致:
49    a
48    b
47    c
0    d
1    e

一般差異

總結loc 和iloc 之間的一般差異:

  • loc:索引標籤-based,按標籤精確選擇。
  • iloc:基於整數位置,按標籤選擇位置。
  • loc 可以處理非單調索引和越界標籤,而 iloc 在這種情況下會引發錯誤。
  • 在某些情況下,iloc 比 loc 執行得更快,尤其是當索引是數字且依序排列。

其他注意事項

需要注意的是iloc 也可以對 DataFrame 的欄位進行操作,但其語法保持不變。然而 loc 在選擇列時可以使用軸標籤,提供更大的靈活性。

更多信息,請參閱 pandas 文件中的[索引和切片](https://pandas.pydata.org/docs/ user_guide/indexing.html).

以上是pandas 的 DataFrame 選擇的 `loc` 和 `iloc` 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn