在处理 pandas 数据框时,选择数据是非常常见的操作。为了满足这种需求,pandas 提供了多种选择数据的方法,其中最常用的是 df.loc
和 df.iloc
。尽管它们在许多情况下都可以互换使用,但它们之间确实存在一些关键区别,初学者必须明确这些区别以避免潜在的错误。
1. 基本定义
- df.loc:基于标签的数据选择方法。
- df.iloc:基于位置的数据选择方法。
2. 什么是标签?什么是位置?
在深入了解这两种方法之前,我们首先要理解“标签”和“位置”这两个概念。
标签 (Label)
标签是数据框或系列的索引。这些索引可以是数字,也可以是字符串或其他数据类型。例如:
import pandas as pd
data = {'A': ['apple', 'banana', 'cherry']}
df = pd.DataFrame(data, index=['x', 'y', 'z'])
print(df)
输出:
A
x apple
y banana
z cherry
在上述例子中,'x'
, 'y'
, 'z'
就是数据框 df
的标签(或索引)。
位置 (Position)
位置是数据框或系列中的元素的整数位置。无论索引是什么,位置始终从0开始,并按顺序递增。例如,在上述数据框 df
中,'apple'
的位置是 0,'banana'
的位置是 1,'cherry'
的位置是 2。
3. df.loc vs df.iloc
让我们通过一些示例更详细地探讨这两种方法的使用。
示例 1:使用数字索引
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
print(df)
输出:
A B
0 1 4
1 2 5
2 3 6
在这个例子中,标签和位置是相同的。所以,df.loc[0:1, 'A']
和 df.iloc[0:1, 0]
会产生相同的结果。
示例 2:使用非连续数字索引
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data, index=[2, 1, 0])
print(df)
输出:
A B
2 1 4
1 2 5
0 3 6
在这种情况下,标签和位置是不同的。所以,df.loc[2:1, 'A']
选择的是标签为2和1的行,而 df.iloc[0:1, 0]
选择的是位置为0的行。
示例 3:使用字符串索引
data = {'A': ['apple', 'banana', 'cherry']}
df = pd.DataFrame(data, index=['x', 'y', 'z'])
print(df)
输出:
A
x apple
y banana
z cherry
在这种情况下,只有 df.loc
可以使用字符串索引,而 df.iloc
只能使用整数位置。
管 df.loc
和 df.iloc
在很多情况下都可以用来选择数据,但它们之间的关键区别在于选择的基准:标签还是位置。为了避免混淆和错误,初学者应该始终明确他们正在使用的是哪种选择方法,并确保正确使用它。
希望这篇博客能帮助您更好地理解和使用 pandas 中的 df.loc
和 df.iloc
。如果您有任何疑问或需要进一步的帮助,请随时联系我们