在Pandas库中,`iloc`和`loc`是用于选择DataFrame或Series中数据的两种主要方法。尽管它们的目的相似,但它们的用法和基于的索引类型有着显著的区别。以下是`iloc`和`loc`之间的主要区别:
目录
1. 基于的索引类型
- `loc`:基于标签的索引。它使用DataFrame或Series的轴标签来选择数据。对于DataFrame,这意味着使用行索引(index)和列标签(columns)来选择数据;
- `iloc`:基于整数位置的索引。它使用基于0的整数位置来选择数据。对于DataFrame,这意味着使用行号和列号来选择数据。
2. 使用场景
- 如果知道要选择的数据的确切标签(例如,特定的行索引或列名),那么`loc`是一个很好的选择;
- 如果知道要选择的数据在DataFrame或Series中的位置(例如,想要选择前两行或第三列),那么`iloc`是更好的选择。
3. 示例
3.1 使用`loc`
import pandas as pd
# 创建一个简单的DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 使用loc选择标签为'Bob'的行
row_bob = df.loc[df.index == 'Bob'] # 注意:通常DataFrame的行索引不是字符串,这里仅为示例
print(row_bob)
# 使用loc选择'Age'列
age_column = df.loc[:, 'Age']
print(age_column)
# 使用loc选择标签为'Bob'的行和'Age'列
bob_age = df.loc[df.index == 'Bob', 'Age']
print(bob_age)
3.2 使用`iloc`
# 使用iloc选择前两行
first_two_rows = df.iloc[:2]
print(first_two_rows)
# 使用iloc选择第三列(注意:Python的索引是从0开始的)
third_column = df.iloc[:, 2] # 这会抛出错误,因为只有两列,但展示了iloc的语法
print(third_column) # 如果DataFrame有三列或更多,这将正常工作
# 使用iloc选择第一行和第二列(即'Age'列)的数据
first_row_second_column = df.iloc[0, 1]
print(first_row_second_column) # 输出:25
4. 切片
- `loc`可以使用标签切片来选择数据,但通常不如直接指定标签列表来得直接和直观;
- `iloc`使用基于整数位置的切片来选择数据,这在处理连续范围的数据时非常有用。
5. 布尔索引
两者都可以使用布尔索引来选择满足特定条件的行。但是提供的布尔条件应该与所使用的索引类型相匹配(即,使用`loc`时条件应基于标签,使用`iloc`时条件应基于位置)。