查看原文
其他

将excel中某一列拆分为多个列

大邓 大邓和他的Python 2019-04-26

昨天有学员学 python文本分析:从入门到精通 这门课时遇到jupyter配置问题,交流快结束的时候聊到excel数据拆分,说如果咱们后续提供excel数据分析的课程,比如excel数据拆分我还会购买大邓你的课。

其实我这门课虽然叫做 python文本分析:从入门到精通 ,但其实毕竟是营销专业出身,要有吸引眼球的营销语言。虽然精通倒不至于,但是让大家同时入门python、爬虫、文本分析、机器学习和数据分析我认为还是可以做到的。我看到这位学员的对话,说明我的课真的帮助到大家解决一些问题,课程质量达到学员预期。

数据

软广就说到此打住,本来学员给我发来了数据,但是数据对于大家可能不熟悉,所以我将学员的数据抽象简化了。

我们先看看数据,再来说问题

  1. import pandas as pd


  2. df = pd.read_excel('data.xls')

  3. df.head()

运行结果

问题

将excel中的某一列拆分成多个列,比如:

  • 将 address 拆分,并新建 province、city

  • 将 birthday 拆分,并新建 year、month、day

思路

之前我们分享过 使用python做更好的数据分析 这篇文章,里面就提到df.agg()方法,可以自定义列的操作函数。

  1. df.agg({'列名a':'操作函数名1'})

自定义操作函数

这两个问题,我们要知道每个列对应的数据是什么类型的。因为这是我自己设计的数据,每个单元格中的数据都是字符串。我先设计address列的操作函数

  1. def address_output_province(text):

  2. return text.split('省')[0]+'省'


  3. address_output_province(text='陕西省西安市')

运行

  1. '陕西省'

  1. def address_output_city(text):

  2. return text.split('省')[-1]


  3. address_output_city(text='陕西省西安市')

运行

  1. '西安市'

接着我们设计下 birthday 的操作函数,输出年份

  1. def birthday_output_year(text):

  2. return text.split('/')[0]


  3. birthday_output_year(text='1995/07/08')

运行

  1. '1995'

  1. def birthday_output_month(text):

  2. return text.split('/')[1]


  3. birthday_output_month(text='1995/07/08')

运行

  1. '07'

  1. def birthday_output_day(text):

  2. return text.split('/')[-1]


  3. birthday_output_day(text='1995/07/08')

运行

  1. '08'

组装

现在我们只需要先新建对应的列newcolumn,然后将拆分的列的值赋值给newcolumn列。

  1. df['province'] = df.agg({'address':address_output_province})

  2. df['city'] = df.agg({'address':address_output_city})

  3. df['year'] = df.agg({'birthday':birthday_output_year})

  4. df['month'] = df.agg({'birthday':birthday_output_month})

  5. df['day'] = df.agg({'birthday':birthday_output_day})

  6. df.head()

运行

通过上面的运行结果,我们知道拆分成功了。现在我们将新的df导出保存。

  1. #将df导出为xls

  2. df.to_excel('newdata.xls')


我们打开项目文件夹,发现文件夹中已经出现了newdata.xls 文件,而且正如我们预期的那样产生了多个新的列。

往期文章

Python系列课(爬虫、文本分析、机器学习)

深度好文 |Matplotlib 可视化最有价值的 50 个图表(附完整 Python 源代码)

爬虫实战:抓取知乎问题“大学生如何赚到一万元”

小demo:对德文数据进行文本分析   

使用Python制作WORD报告 

使用Pandas、Jinja和WeasyPrint制作pdf报告  

如何让python代码显示进度信息?   

PySimpleGUI: 开发自己第一个软件  

100G 文本分析语料资源(免费下载) 

文件腾转挪移操作,那都不是事儿


在微信后台回复 20190305 ,即可获得本项目代码

你看到这里,你懂得



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存