1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > pandas 根据筛选条件对指定excel列进行筛选

pandas 根据筛选条件对指定excel列进行筛选

时间:2019-10-14 14:12:09

相关推荐

pandas 根据筛选条件对指定excel列进行筛选

pandas 根据筛选条件对指定excel列进行筛选

导入需要筛选的excel和筛选条件要筛选的表格A思路结果

这两天老师要求筛选一下最近几年学院发表的文章,从图书馆那要了份数据量较大的excel,将该excel分成学生文章、老师文章两份excel,以第一作者为区分,B站学习法稍微补了补python操作excel,看到pandas就顺手用一下了……大佬勿喷,仅仅是稍微学了一下。

导入需要筛选的excel和筛选条件

import pandas as pddf = pd.read_excel('D:/py_project/datafenxi/scut.xls',sheet_name='savedrecs')ji_he = {'name1','name2','name3',任意多个name}

这里的ji_he是提供的学院所有老师的姓名,与下面的要筛选的表格A做匹配,标记出A中一作为老师的论文。那剩下的未标记就是学生。

要筛选的表格A

excel内容大概长这样(对不起!杰伦力宏紫棋):

这里一作就是杰伦,力宏,和紫棋。

思路

1、由于我们只要第一作者,所以对要筛选的表格A的Author Full Names列进行遍历,按;分割成数组取第0个元素,因为拿到的表格一作的格式千奇百怪,还有-等等莫名字符,所以稍微改了下。

2、拿到的每行A表格的一作名字,与指定老师名单做匹配,True则记录下该索引ID,并给值teacher创建sheet1

3、使用merg()将要筛选的表格A与sheet1做匹配整合成一张表。

while i < len(df):a = df.loc[i, 'Author Full Names'] # 取出Author Full Names列的第i行a1 = str(a).split(';')[0].replace('-', '') # 筛选第i行AFN列的内容,按;分割成数组取第0个元素,删除-字符返回a1# print('q', a1)if a1 in ji_he:print('qq', i) # 获取匹配的索引df3.loc[i] = ['teacher'] # 给匹配出来的一作老师标上teacherdf3.to_excel("D:/py_project/datafenxi/outputscut.xls") # 输出为新的列表i += 1

这里我们可以拿到一个根据A匹配出来的一作是老师身份的索引表sheet1,like this:

然后用merge()根据ID将两份表拼成一份完整表,就基本完成需求了(分成两份表我直接选择excel做透视了,又懒又菜说的就是我)

import pandas as pdsheet1 = pd.read_excel('D:/py_project/datafenxi/scut.xls', sheet_name='savedrecs', index_col='ID')sheet2 = pd.read_excel('D:/py_project/datafenxi/scut.xls', sheet_name='Sheet1', index_col='ID')table = sheet1.merge(sheet2, how='left', on='ID')table.to_excel("D:/py_project/datafenxi/outputfinal.xls")print(table)

结果

这部分语法可以参考B站视频 Link,记得把两个sheet放在一个excel里面(其实我看到了其他大佬直接将多个sheet输出在一个excel,但我没时间改了,之后看看。)

以下是最终结果,表格最右边区分身份:teacher,空为student。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。