题目
18 根据以下代码,得到的结果为?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 8B 6C 40D 30
18 根据以下代码,得到的结果为?
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 8
B 6
C 40
D 30
题目解答
答案
-
初始字典结构:
- 字典
d的键为0, 1, 2, 3,对应值为长度为4的pd.Series。 - 使用
pd.DataFrame(d)创建 DataFrame 时,键成为列名,Series 索引成为行索引。
- 字典
-
转置操作:
- 执行
df = pd.DataFrame(d).T后,原列名变为行索引,原行索引变为列名。 - 转置后 DataFrame 结构为:
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]选取列名为2的 Series,结果为:0 3 1 6 2 30 3 8 Name: 2, dtype: int64df[2][3]选取该 Series 中索引为3的值,即 $8$。
最终结果:A 8
解析
本题主要考查对pandas库中DataFrame的创建、转置以及数据索引操作的理解。解题思路如下:
- 首先,根据给定的字典
d创建DataFrame。字典的键会成为DataFrame的列名,字典中每个Series的索引会成为DataFrame的行索引。 - 接着,对创建好的
DataFrame进行转置操作(使用.T),此时原列名变为行索引,原行索引变为列名。 - 然后,通过
df[2]选取转置后DataFrame中列名为2的Series。 - 最后,在选取的
Series中,通过df[2][3]选取索引为3的值。
下面进行详细的计算:
- 给定字典
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])},使用pd.DataFrame(d)创建DataFrame,其结构如下:0 1 2 3 0 1 4 10 5 1 3 5 20 6 2 3 6 30 8 3 2 8 40 9 - 对上述
DataFrame进行转置操作,即df = pd.DataFrame(d).T,转置后DataFrame的结构变为: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],选取列名为2的Series,结果为:0 3 1 6 2 30 3 8 Name: 2, dtype: int64 - 执行
df[2][3],选取该Series中索引为3的值,即$8$。