前情提要
何老师已经得到了需要的数据,接下来他将要进行的操作就是对他们进行求和。以及进行排名之类的。但是他发现一个重大的问题:学生属于哪个班级在最后一列,这样很不方便。
学号 | 姓名 | 语文 | …… | 体育 | 班级 |
---|---|---|---|---|---|
A01 | 饶秀颖 | 35 | …… | 95 | 1班 |
A02 | 于俊远 | 38 | …… | 95 | 1班 |
A03 | 王五 | 54 | …… | 97 | 1班 |
A08 | 冉颇 | 34 | …… | 99 | 3班 |
A09 | 夫余岚裳 | 43 | …… | 94 | 3班 |
A10 | 薛菁 | 55 | …… | 96 | 3班 |
他的想法是,班级这一列的位置应该在学号和姓名的后面,而不是在整个列表的最后面。因为我们等下需要进行求和运算,求和得到的值也会添加在最后面。但倘若所有的后续内容都一致添加在最后,难免会显得表格很累赘。因此我们需要移动班级的位置。
数据及运行平台
数据使用的是上一个步骤中获得Excel表格,其内容展示出来就如前情提要中的图所示。
实际操作
1.导入模块
import pandas as pd
import pathlib
2.导入文件
不同于上一节中的有五个Excel文件,因此我们首先锁定了他们所在文件夹,然后将它们遍历出来,这里我们只有一个socre.xlsx文件,因此我们直接设定文件目录即可。
file_path = pathlib.Path("/content/drive/MyDrive/Notebooks_data/score.xlsx")
file_path
out
PosixPath('/content/drive/MyDrive/Notebooks_data/score.xlsx')
3.读取文件
score = pd.read_excel(file_path)
score
out
学号 姓名 语文 数学 英语 音乐 美术 体育 班级 0 A01 饶秀颖 35 45 55 95 95 95 1班 1 A02 于俊远 38 53 46 97 98 95 1班 2 A03 王五 54 46 38 97 99 97 1班 3 A08 冉颇 34 54 60 96 98 99 3班 4 A09 夫余岚裳 43 57 67 98 95 94 3班 5 A10 薛菁 55 60 65 96 93 96 3班
列位置移动操作-pop-insert
根据网上主流的方法有两种,一种是获取列columns的列名,然后对列名进行排列后再利用.ix方法。另一种是先将要转移的列的值赋给一个中间变量mid后,将这一列删除,再利用insert方法将中间变量插入到指定位置。
这里我们采用第二种方法# 不管是.pop还是.insert都是原地操作,运行以后原数据也会改变 # pop是从原数据中剔除的dataframe中指定的列,可以将之赋值给中间变量 mid_data = score.pop("班级") # .insert(插入位置,命名列名,列数据) score.insert(2, "班级", mid_data) score
out
学号 姓名 班级 语文 数学 英语 音乐 美术 体育 0 A01 饶秀颖 1班 35 45 55 95 95 95 1 A02 于俊远 1班 38 53 46 97 98 95 2 A03 王五 1班 54 46 38 97 99 97 3 A08 冉颇 3班 34 54 60 96 98 99 4 A09 夫余岚裳 3班 43 57 67 98 95 94 5 A10 薛菁 3班 55 60 65 96 93 96
保存文件
score.to_excel("/content/drive/MyDrive/Notebooks_data/score.xlsx", index=False)
后记
下一节补充一点删除行列的操作。因为发现这一节提到了pop。
致谢链接
pandas dataframe 列移动
pandas 如何移动列的位置
更改pandas dataframe中两列的位置