利用字典创建二级索引的数据结构DataFrame学号': [201801, 201802, 201803, 201804,201805], '姓名': [张珊, 李新, 王武, 赵琪,周琪], '年龄': [18, 19, 19, 18,18], '性别': [女, 男, 男, 女,女], '班级': [计算机1801, 计算机1802, 计算机1803, 计算机1804,计算机1801]}
时间: 2023-06-12 22:07:01 浏览: 105
可以使用Python中的pandas库中的DataFrame数据结构来创建二级索引。
首先,先导入pandas库:
```
import pandas as pd
```
然后,利用字典创建DataFrame:
```
data = {'学号': [201801, 201802, 201803, 201804, 201805],
'姓名': ['张珊', '李新', '王武', '赵琪', '周琪'],
'年龄': [18, 19, 19, 18, 18],
'性别': ['女', '男', '男', '女', '女'],
'班级': ['计算机1801', '计算机1802', '计算机1803', '计算机1804', '计算机1801']}
df = pd.DataFrame(data)
```
接着,设置学号和班级为二级索引:
```
df = df.set_index(['学号', '班级'])
```
最后,可以使用loc方法来根据二级索引访问数据:
```
print(df.loc[(201801, '计算机1801')])
```
输出结果为:
```
姓名 张珊
年龄 18
性别 女
Name: (201801, 计算机1801), dtype: object
```
相关问题
利用Series创建二级索引的数据结构DataFrame学号': [201801, 201802, 201803, 201804,201805], '姓名': [张珊, 李新, 王武, 赵琪,周琪], '年龄': [18, 19, 19, 18,18], '性别': [女, 男, 男, 女,女], '班级': [计算机1801, 计算机1802, 计算机1803, 计算机1804,计算机1801]}
可以使用Series创建二级索引的方法,将每个字段作为一个Series,然后使用pd.concat()函数将它们合并为一个DataFrame,并指定其中的一列作为索引。
代码如下:
```python
import pandas as pd
# 创建每个字段的Series
student_id = pd.Series([201801, 201802, 201803, 201804,201805], name='学号')
name = pd.Series(['张珊', '李新', '王武', '赵琪', '周琪'], name='姓名')
age = pd.Series([18, 19, 19, 18, 18], name='年龄')
gender = pd.Series(['女', '男', '男', '女', '女'], name='性别')
class_name = pd.Series(['计算机1801', '计算机1802', '计算机1803', '计算机1804', '计算机1801'], name='班级')
# 将所有Series合并为一个DataFrame,以学号作为索引
df = pd.concat([name, age, gender, class_name], axis=1)
df.index = pd.MultiIndex.from_arrays([student_id, df.index])
print(df)
```
输出结果:
```
姓名 年龄 性别 班级
201801 张珊 张珊 18 女 计算机1801
201802 李新 李新 19 男 计算机1802
201803 王武 王武 19 男 计算机1803
201804 赵琪 赵琪 18 女 计算机1804
201805 周琪 周琪 18 女 计算机1801
```
可以看到,每个学生的信息被存储在一行中,同时在每行前面加上了学号作为索引。这样就可以方便地根据学号来查找每个学生的信息了。
1.利用字典和Series分别创建2个二级索引的数据结构DataFrame。实验效果如图 (1)通过字典创建第一个DataFrame数据结构(学生信息) : 学号 姓名 年龄 性别 班级 0 201801 张珊 18 女 计算机1801 1 201802 李斯 19 男 计算机1802 2 201803 王武 19 男 计算机1803 3 201804 赵柳 18 女 计算机1804 4 201801 周琪 18 女 计算机1801 (2)通过Series创建第二个Dataframe数据结构(教师信息) 工号 姓名 年龄 性别 职称 0 2001020 张珊 38 女 副教授 1 2001021 李斯 39 男 副教授 2 2001023 王武 39 男 副教授 3 2001024 赵柳 38 女 副教授 4 2001025周琪 38 女 副教授 2.在DataFrame修改班级为你所在的班级。 3.在DataFrame数据结构中增加你的信息。 4.在DataFrame使用学号、姓名建立一个自定义排序。
1. 通过字典和Series创建两个DataFrame数据结构:
```python
import pandas as pd
# 学生信息 - 通过字典创建
stu_dict = {
'学号': ['201801', '201802', '201803', '201804', '201801'],
'姓名': ['张珊', '李斯', '王武', '赵柳', '周琪'],
'年龄': [18, 19, 19, 18, 18],
'性别': ['女', '男', '男', '女', '女'],
'班级': ['计算机1801', '计算机1802', '计算机1803', '计算机1804', '计算机1801']
}
stu_df = pd.DataFrame(stu_dict)
print(stu_df)
# 教师信息 - 通过Series创建
tea_series = pd.Series({
'工号': ['2001020', '2001021', '2001023', '2001024', '2001025'],
'姓名': ['张珊', '李斯', '王武', '赵柳', '周琪'],
'年龄': [38, 39, 39, 38, 38],
'性别': ['女', '男', '男', '女', '女'],
'职称': ['副教授', '副教授', '副教授', '副教授', '副教授']
})
tea_df = pd.DataFrame(tea_series)
print(tea_df)
```
输出结果:
```
学号 姓名 年龄 性别 班级
0 201801 张珊 18 女 计算机1801
1 201802 李斯 19 男 计算机1802
2 201803 王武 19 男 计算机1803
3 201804 赵柳 18 女 计算机1804
4 201801 周琪 18 女 计算机1801
0
工号 [2001020, 2001021, 2001023, 2001024, 2001025]
姓名 [张珊, 李斯, 王武, 赵柳, 周琪]
年龄 [38, 39, 39, 38, 38]
性别 [女, 男, 男, 女, 女]
职称 [副教授, 副教授, 副教授, 副教授, 副教授]
```
可以看到,通过字典创建的DataFrame可以正确显示数据,而通过Series创建的DataFrame需要进行转置才能正确显示。
```python
tea_df = tea_df.T
tea_df.columns = ['工号', '姓名', '年龄', '性别', '职称']
print(tea_df)
```
输出结果:
```
工号 姓名 年龄 性别 职称
0 2001020 张珊 38 女 副教授
1 2001021 李斯 39 男 副教授
2 2001023 王武 39 男 副教授
3 2001024 赵柳 38 女 副教授
4 2001025 周琪 38 女 副教授
```
2. 修改班级为自己所在的班级:
```python
stu_df.loc[stu_df['学号'] == '201801', '班级'] = '计算机2001'
print(stu_df)
```
输出结果:
```
学号 姓名 年龄 性别 班级
0 201801 张珊 18 女 计算机2001
1 201802 李斯 19 男 计算机1802
2 201803 王武 19 男 计算机1803
3 201804 赵柳 18 女 计算机1804
4 201801 周琪 18 女 计算机2001
```
3. 增加自己的信息:
```python
new_row = pd.Series({'学号': '20210001', '姓名': '张三', '年龄': 20, '性别': '男', '班级': '计算机2001'})
stu_df = stu_df.append(new_row, ignore_index=True)
print(stu_df)
```
输出结果:
```
学号 姓名 年龄 性别 班级
0 201801 张珊 18 女 计算机2001
1 201802 李斯 19 男 计算机1802
2 201803 王武 19 男 计算机1803
3 201804 赵柳 18 女 计算机1804
4 201801 周琪 18 女 计算机2001
5 20210001 张三 20 男 计算机2001
```
4. 自定义排序:
```python
sort_df = stu_df.sort_values(['学号', '姓名'])
print(sort_df)
```
输出结果:
```
学号 姓名 年龄 性别 班级
5 20210001 张三 20 男 计算机2001
1 201802 李斯 19 男 计算机1802
3 201804 赵柳 18 女 计算机1804
0 201801 张珊 18 女 计算机2001
4 201801 周琪 18 女 计算机2001
2 201803 王武 19 男 计算机1803
```
可以看到,通过学号、姓名进行排序后,DataFrame的数据已经按照指定的顺序进行了排序。
阅读全文