题目
根据以下代码,得到的结果为:import pandas as pdd = (0 : pd.Series([1, 3, 3, 2]), 1 : pd.Series([4, 5, 6, 8]), 2 : pd.Series([10, 20, 30, 40]), 3 : pd.Series([5, 6, 8, 9]))df = pd.DataFrame(d).Tprint(df[2][3])A. 30B. 8C. 6D. 40
根据以下代码,得到的结果为:
import pandas as pd
d = {0 : pd.Series([1, 3, 3, 2]), 1 : pd.Series([4, 5, 6, 8]), 2 : pd.Series([10, 20, 30, 40]), 3 : pd.Series([5, 6, 8, 9])}
df = pd.DataFrame(d).T
print(df[2][3])
A. 30
B. 8
C. 6
D. 40
题目解答
答案
D. 40
解析
本题考查Pandas库中DataFrame的转置操作及索引访问。关键在于理解转置后行列索引的变化,以及如何通过列名和行标签正确访问元素。
核心思路:
- 构造原始DataFrame:字典中的键作为列索引,对应的Series值填充列。
- 转置操作:行列互换,原列索引变为行索引,原行索引变为列索引。
- 索引访问:
df[2][3]表示先取第2列,再取该列中行标签为3的元素。
破题关键:明确转置后元素的位置对应关系,即转置后的行对应原列,列对应原行。
构造原始DataFrame
字典d的结构为:
{
0: pd.Series([1, 3, 3, 2]),
1: pd.Series([4, 5, 6, 8]),
2: pd.Series([10, 20, 30, 40]),
3: pd.Series([5, 6, 8, 9])
}
构造的df列索引为0,1,2,3,行索引为0,1,2,3,数据如下:
| 列索引 | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| 行0 | 1 | 4 | 10 | 5 |
| 行1 | 3 | 5 | 20 | 6 |
| 行2 | 3 | 6 | 30 | 8 |
| 行3 | 2 | 8 | 40 | 9 |
转置操作
转置后,行索引变为原列索引0,1,2,3,列索引变为原行索引0,1,2,3。转置后的df结构如下:
| 行索引 | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| 列0 | 1 | 3 | 3 | 2 |
| 列1 | 4 | 5 | 6 | 8 |
| 列2 | 10 | 20 | 30 | 40 |
| 列3 | 5 | 6 | 8 | 9 |
访问元素df[2][3]
df[2]表示取转置后的第2列,对应原行2的值:[10, 20, 30, 40]。df[2][3]表示取该列中行标签为3的元素,即40。