数据分析(二)

您所在的位置:网站首页 excel分号换行 数据分析(二)

数据分析(二)

2023-08-20 18:05| 来源: 网络整理| 查看: 265

文章目录 场景一、python二、excel+word

场景

办公室老师给了我一张Excel表,记录了每位同学的获奖情况:

学号姓名奖项加分101小明ICPC世界冠军;国奖;优秀班干部15.0102小亮一作论文;数学建模美赛O奖;优秀班集体12.5103小刘年管会活动组织委员优秀;2019三下乡优秀视频奖,社会实践优秀团队;院公益实践之星;院优班11.3104小郭院特色班级0.5

如上表所示,一个同学可能有多个奖项,老师的需求是将每行数据按奖项列中的分隔符(“;”)拆成多行,比如第一行数据将被拆成:

学号姓名奖项加分101小明ICPC世界冠军15.0101小明国奖15.0101小明优秀班干部15.0

事实上,excel自带有按分隔符分列的功能,但是却没有这种按分隔符分行的功能,最硬核的方法当然是使用VBA或者Python编程实现,不过我在网上看到了一个更骚气的好方法。下面就介绍一下我是如何用:1. excel+word和 2. 只用python编程 两种方式实现的吧~

一、python

首先要安装pandas, xlrd, xlwt三个包:

pip install pandas xlrd xlwt

然后用pandas读取数据,用DataFrame存储数据,遍历DataFrame的行,用split函数分割每一行的“奖项”列,将得到的数据存储在新的DataFrame里面并转换为excel文件即可,代码如下:

import pandas as pd file = r'split.xlsx' df = pd.read_excel(file) result = pd.DataFrame(columns=['学号','姓名','奖项','总分']) for row in df.itertuples(index=False): for item in row[2].split(';'): result = result.append({'学号':row[0],'姓名':row[1],'奖项':item,'总分':row[3]},ignore_index=True) result.to_excel("result.xls") 二、excel+word

excel+word的做法是参照这个帖子做的。基本思路是将excel的数据导入word,用空格+制表符将分割符替换,再导回excel并填充空白:

将“奖项”列移至末尾,方便待会的替换将excel表格中的数据全选,【只粘贴文本】到word中在word中将“;”分隔符替换成“^p^t^t^t”(奖项列前面有多少列就写多少个^t)将word中的数据全选,粘贴回excel中,此时每位同学的奖项列已被分行,但是有很多空白需要填充在excel的开始菜单中选择【查找和选择】-【定位条件】-【空值】,这样就把所有的空白选好了在公式栏写入=,然后鼠标点击选择第一格有效数据(101),按下ctrl+Enter强制复制就可以将所有空白按需填充好了。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3