题目
19 对于以下数据集,如果想要提取元素4,哪个无法返回想 要的结果? df = pd. DataFrame([[1, 2, 3], [2, 3, 4]], columns = ['a', 'b', 'c'], index = ['A', 'B']) A. df.iloc[1:2:] B. df['c'][-1:-2:-1] C. df.loc['B','c'] D. df['c'][-1:-2]
19 对于以下数据集,如果想要提取元素4,哪个无法返回想 要的结果? df = pd. DataFrame([[1, 2, 3], [2, 3, 4]], columns = ['a', 'b', 'c'], index = ['A', 'B'])
A. df.iloc[1:2:]
B. df['c'][-1:-2:-1]
C. df.loc['B','c']
D. df['c'][-1:-2]
A. df.iloc[1:2:]
B. df['c'][-1:-2:-1]
C. df.loc['B','c']
D. df['c'][-1:-2]
题目解答
答案
首先,我们来解析给定的数据集 `df`:
```python
import pandas as pd
df = pd.DataFrame([[1, 2, 3], [2, 3, 4]], columns=['a', 'b', 'c'], index=['A', 'B'])
```
这个数据集 `df` 看起来是这样的:
```
a b c
A 1 2 3
B 2 3 4
```
现在,我们来逐个分析每个选项,看看哪个选项无法返回元素 4。
### 选项 A: `df.iloc[1:2:]`
`df.iloc[1:2:]` 使用整数索引提取行。`1:2` 表示从第 1 行(索引从 0 开始)到第 2 行(不包括第 2 行),步长为 1。因此,这会返回第 1 行(即索引为 'B' 的行):
```python
df.iloc[1:2:]
```
结果是:
```
a b c
B 2 3 4
```
这个结果是一个 DataFrame,包含第 1 行的所有元素,但没有直接返回元素 4。
### 选项 B: `df['c'][-1:-2:-1]`
`df['c']` 提取列 'c',结果是一个 Series:
```
A 3
B 4
Name: c, dtype: int64
```
`-1:-2:-1` 表示从倒数第 1 个元素到倒数第 2 个元素(不包括倒数第 2 个元素),步长为 -1。因此,这会返回倒数第 1 个元素:
```python
df['c'][-1:-2:-1]
```
结果是:
```
B 4
Name: c, dtype: int64
```
这个结果是一个 Series,包含元素 4。
### 选项 C: `df.loc['B','c']`
`df.loc['B','c']` 使用标签索引提取特定行和列的元素。`'B'` 是行标签,`'c'` 是列标签:
```python
df.loc['B','c']
```
结果是:
```
4
```
这个结果是元素 4。
### 选项 D: `df['c'][-1:-2]`
`df['c']` 提取列 'c',结果是一个 Series:
```
A 3
B 4
Name: c, dtype: int64
```
`-1:-2` 表示从倒数第 1 个元素到倒数第 2 个元素(不包括倒数第 2 个元素),步长为 1。因此,这会返回一个空的 Series,因为步长为 1 时,从倒数第 1 个元素到倒数第 2 个元素是反向的,没有元素满足条件:
```python
df['c'][-1:-2]
```
结果是:
```
Series([], Name: c, dtype: int64)
```
这个结果是一个空的 Series,没有返回元素 4。
### 结论
选项 A 返回一个包含元素 4 的 DataFrame,但没有直接返回元素 4。
选项 B 返回一个包含元素 4 的 Series。
选项 C 直接返回元素 4。
选项 D 返回一个空的 Series,没有返回元素 4。
因此,无法返回元素 4 的选项是 **D**。
解析
本题考查Pandas数据框的索引方法,重点在于理解不同索引方式(iloc、loc、列切片、切片步长)的使用逻辑。解题核心在于:
- 明确元素位置:元素4位于行标签
'B'、列标签'c'的位置; - 区分索引方式:
iloc基于位置,loc基于标签,列切片需注意步长方向; - 切片逻辑:特别注意负索引和步长组合的取值范围。
选项A:df.iloc[1:2:]
- 逻辑:
iloc[1:2]提取第1行(索引'B'),返回包含4的DataFrame。 - 结果:包含
4,但未直接提取元素,需进一步操作。
选项B:df['c'][-1:-2:-1]
- 逻辑:
df['c']提取列'c',[-1:-2:-1]从倒数第1个元素(4)反向取1个元素。 - 结果:返回包含
4的Series。
选项C:df.loc['B','c']
- 逻辑:直接通过标签定位行
'B'、列'c'。 - 结果:直接返回
4。
选项D:df['c'][-1:-2]
- 逻辑:
df['c']提取列'c',[-1:-2]从倒数第1个元素(4)正向取到倒数第2个元素(3),但步长为1时无法反向,导致结果为空。 - 结果:返回空Series,无法提取
4。