loc和iloc的比较
.loc
和 .iloc
是 pandas 提供的两种不同的索引方法,它们的主要区别在于索引数据的依据:
.loc
:- 基于标签的索引,使用 DataFrame 或 Series 的索引标签(即行名和列名)来获取数据。
- 可以使用单个标签、标签列表、标签切片、布尔数组或者 callable 函数作为索引器。
- 如果使用标签索引并且标签不存在,
.loc
会抛出一个KeyError
。 - 对于切片,包括两端的标签。
.iloc
:- 基于位置的索引,使用 DataFrame 或 Series 的整数索引位置来获取数据。
- 可以使用单个整数、整数列表、整数切片、布尔数组或者 callable 函数作为索引器。
- 如果使用整数索引并且位置超出范围,
.iloc
会抛出一个IndexError
,但切片索引器允许超出范围的索引。 - 对于切片,不包括结束位置的索引,这与 Python 的列表切片行为一致。
简而言之,.loc
用于根据数据的实际标签(名称)进行索引,而.iloc
用于根据数据的实际位置(整数索引)进行索引。选择哪一种方法取决于您是否知道数据的标签,或者是否需要按照数据的实际位置进行操作。
示例
下面为 .loc
和 .iloc
提供一个例子,以说明它们在 DataFrame 中的使用。
.loc
示例
假设我们有一个 DataFrame,其中包含了某些水果的库存信息,包括它们的种类和数量。DataFrame 的索引是水果的名称,列是 ‘库存数量’。
import pandas as pd
# 创建一个示例 DataFrame
data = {
<