pandas常用操作复习-03-列位置移动
目录
- 前情提要
- 数据及运行平台
- 实际操作
- 1.导入模块
- 2.导入文件
- 3.读取文件
- 列位置移动操作-pop-insert
- 保存文件
- 后记
- 致谢链接
前情提要
??何老师已经得到了需要的数据,接下来他将要进行的操作就是对他们进行求和。以及进行排名之类的。但是他发现一个重大的问题:学生属于哪个班级在最后一列,这样很不方便。
学号 | 姓名 | 语文 | …… | 体育 | 班级 |
---|---|---|---|---|---|
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
学号 | 姓名 | 语文 | 数学 | 英语 | 音乐 | 美术 | 体育 | 班级 |
---|---|---|---|---|---|---|---|---|
A01 | 饶秀颖 | 35 | 45 | 55 | 95 | 95 | 95 | 1班 |
A02 | 于俊远 | 38 | 53 | 46 | 97 | 98 | 95 | 1班 |
A03 | 王五 | 54 | 46 | 38 | 97 | 99 | 97 | 1班 |
A08 | 冉颇 | 34 | 54 | 60 | 96 | 98 | 99 | 3班 |
A09 | 夫余岚裳 | 43 | 57 | 67 | 98 | 95 | 94 | 3班 |
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
学号 | 姓名 | 班级 | 语文 | 数学 | 英语 | 音乐 | 美术 | 体育 |
---|---|---|---|---|---|---|---|---|
A01 | 饶秀颖 | 1班 | 35 | 45 | 55 | 95 | 95 | 95 |
A02 | 于俊远 | 1班 | 38 | 53 | 46 | 97 | 98 | 95 |
A03 | 王五 | 1班 | 54 | 46 | 38 | 97 | 99 | 97 |
A08 | 冉颇 | 3班 | 34 | 54 | 60 | 96 | 98 | 99 |
A09 | 夫余岚裳 | 3班 | 43 | 57 | 67 | 98 | 95 | 94 |
A10 | 薛菁 | 3班 | 55 | 60 | 65 | 96 | 93 | 96 |
保存文件
score.to_excel("/content/drive/MyDrive/Notebooks_data/score.xlsx", index=False)
后记
??下一节补充一点删除行列的操作。因为发现这一节提到了pop。
致谢链接
pandas dataframe 列移动