pandas的iloc和loc的区别
时间: 2024-06-12 18:10:05 浏览: 211
pandas中的iloc和loc都是用于选取数据的方法,但它们的使用方式有所不同。
iloc是通过行号和列号来选取数据的,可以使用整数、整数列表或者布尔数组作为参数。例如,df.iloc表示选取第一行数据,df.iloc[:, 0]表示选取第一列数据。
loc则是通过行标签和列标签来选取数据的,可以使用标签名、标签列表或者布尔数组作为参数。例如,df.loc表示选取行标签为0的数据,df.loc[:, 'A']表示选取列标签为'A'的数据。
相关问题
pandas中iloc与loc的区别
在pandas库中,`loc` 和 `iloc` 是两个用于访问和操作DataFrame的重要功能,它们的主要区别在于选择元素的方式:
1. **loc**(location-based indexing)[^1]:
- 它基于标签(label-based),即通过列名或行索引来定位元素。
- 使用方式:`df.loc[row_indexer, column_indexer]`。如果仅有一个参数,可以指定行,如`df.loc['row_name']`;如果只有一个索引器,可以指定列,如`df.loc[:, 'column_name']`。
2. **iloc**(integer-based indexing):
- 它基于位置(position-based),即直接使用整数索引来选取元素,从0开始计数。
- 使用方式:`df.iloc[row_indexer, column_indexer]`。同样,可以单独传入行或列的索引,如`df.iloc[0]` 或 `df.iloc[:, 1]`。
举例来说,假设我们有如下DataFrame:
```python
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
```
- 使用`loc`选取特定行和列:
```python
print(df.loc[1, 'B']) # 输出:5,因为索引1对应第二行,'B'列的值
```
- 使用`iloc`选取第2行第2列:
```python
print(df.iloc[1, 1]) # 输出:5,因为位置(1, 1)对应第二行第二列
```
pandas的iloc、loc、.at、.iat区别
Pandas库中的`loc`、`iloc`、`.at`和`.iat`用于数据框(DataFrame)的索引操作,它们之间的主要区别在于所使用的索引类型:
1. **loc** (label-based indexing): 这种方式基于标签(即行和列的名字)。当你想要根据行名或列名选择数据时,应该使用`loc`。例如,要选取所有姓‘张’的学生的成绩:
```python
df.loc[df['姓名'] == '张三', '成绩']
```
2. **iloc** (integer-location based indexing): 这是基于位置的索引,使用的是整数下标。它适用于直接通过数字来访问行和列。比如,选取前两行的所有数据:
```python
df.iloc[:2, :]
```
注意,这里的冒号表示从开始到结束,包括开头但不包括结尾。
3. **.at** 和 **.iat**: 这两个方法主要用于单元素的定位。`.at`用于精确匹配,如果列名存在重复,则会引发错误;而`.iat`则使用整数下标,不会检查名称是否存在。例如,获取张三的成绩(假设列名无重复):
```python
df.at[df.index.get_loc('张三'), '成绩']
```
或者使用`.iat`:
```python
df.iat[df.columns.get_loc('成绩'), df.index.get_loc('张三')]
```
阅读全文
相关推荐











