dataframe loc iloc
时间: 2023-04-22 10:00:36 浏览: 138
dataframe是pandas库中的一个数据结构,类似于Excel表格,可以存储二维数据。loc和iloc是dataframe中的两个方法,用于选取数据。
loc是根据行标签和列标签来选取数据的方法,语法为:df.loc[row_indexer, column_indexer]。其中,row_indexer可以是单个行标签,也可以是行标签的列表或布尔数组;column_indexer可以是单个列标签,也可以是列标签的列表或布尔数组。
iloc是根据行索引和列索引来选取数据的方法,语法为:df.iloc[row_indexer, column_indexer]。其中,row_indexer可以是单个行索引,也可以是行索引的列表或布尔数组;column_indexer可以是单个列索引,也可以是列索引的列表或布尔数组。
总的来说,loc和iloc都是用于选取dataframe中的数据,只是选取方式不同。loc是根据标签来选取,iloc是根据索引来选取。
相关问题
python dataframe loc函数_python pandas.DataFrame.iloc函数使用详解
当然,我非常乐意为您提供有关 Python pandas.DataFrame.iloc 函数的使用详解。pandas.DataFrame.iloc 函数用于按位置选择行和列,它的语法格式如下:
``` python
df.iloc[row_indexer,column_indexer]
```
其中,row_indexer 是行的位置或行的布尔条件,column_indexer 是列的位置或列的布尔条件。row_indexer 和 column_indexer 都可以是单个位置、位置列表、位置切片或布尔条件。
下面是一些具体的使用方法:
1. 使用单个位置选择行和列:
``` python
df.iloc[0, 0]
```
2. 使用位置列表选择行和列:
``` python
df.iloc[[0, 2], [1, 3]]
```
3. 使用位置切片选择行和列:
``` python
df.iloc[0:3, 1:3]
```
4. 使用布尔条件选择行和列:
``` python
df.iloc[df['column_label'] > 10, [0, 2]]
```
5. 使用函数选择行和列:
``` python
df.iloc[lambda df: df.index % 2 == 0, [1, 3]]
```
除了以上的使用方法外,pandas.DataFrame.iloc 函数还支持一些其他的参数,如 axis、level、sort、na_rep 等。这些参数可以根据具体的需求进行选择和设置。
希望这些内容能够对您有所帮助,如果您还有其他的问题,可以随时向我提问。
dataframe loc转iloc
### 将 `loc` 方法转换为 `iloc` 的用法和示例
在 Pandas 中,`loc` 和 `iloc` 是两种不同的索引器。`loc` 使用标签来选择数据,而 `iloc` 则基于整数位置进行选择。要将 `loc` 转换为 `iloc`,需要理解两者之间的差异并调整语法。
#### 差异概述
- **`loc`**: 基于行和列的标签名称进行选择。
- **`iloc`**: 基于行和列的位置(即整数索引)进行选择[^1]。
以下是具体的转换规则:
| `loc` 表达式 | 对应的 `iloc` 表达式 |
|----------------------------------|-----------------------------------|
| `df.loc[row_label, column_label]` | `df.iloc[row_position, col_position]` |
其中:
- `row_label` 和 `column_label` 是标签名,
- `row_position` 和 `col_position` 是对应的整数索引。
---
#### 示例代码
假设我们有一个如下所示的数据框 `df`:
```python
import pandas as pd
data = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
index = ['a', 'b', 'c']
columns = ['d', 'e', 'f', 'g']
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
```
输出结果为:
```
d e f g
a 1 2 3 4
b 5 6 7 8
c 9 10 11 12
```
##### 使用 `loc` 进行选择
如果我们要通过标签选取第 2 行 (`'b'`) 和第 3 列 (`'f'`) 的值,则可以写成:
```python
value_loc = df.loc['b', 'f']
print(value_loc) # 输出:7
```
##### 转换为 `iloc`
为了实现相同的功能,我们需要找到 `'b'` 和 `'f'` 所对应的位置分别是 `[1, 2]` (注意 Python 索引从零开始),因此可以用以下语句替代:
```python
value_iloc = df.iloc[1, 2]
print(value_iloc) # 输出:7
```
同样地,对于多行或多列的选择也可以完成类似的映射操作。例如,获取前两行以及最后三列可以通过下面的方式表达出来:
###### 使用 `loc`
```python
subset_loc = df.loc[['a', 'b'], ['e', 'f', 'g']]
print(subset_loc)
```
###### 转换成 `iloc`
由于 `'a'`, `'b'` 分别位于索引 0 和 1;而 `'e'`, `'f'`, `'g'` 处于索引范围 [1:4] 内部,所以有:
```python
subset_iloc = df.iloc[[0, 1], 1:]
print(subset_iloc)
```
以上两个片段都会返回相同的子集矩阵。
---
### 注意事项
当尝试将复杂的布尔条件或者切片应用到 `.iloc[]` 上时,请记住它只接受纯数值型参数作为输入源,并且不支持字符串形式的关键字匹配逻辑运算符等高级特性^。
---
阅读全文
相关推荐
















