前言

冬日游,似水云雪落满头。
莫是谁家少年不知愁。
纵无心,跌入云泥,
相看笑不休!

 好久没有女神的信,好久没有和她谈心,怀念她柔情似水的眼睛,是李有为加班夜晚中的星星……

 女神失恋的第33天后,日渐消瘦的她终于从分手的阴霾中走了出来,身上散发着像往常耀眼夺目的光彩。

 “有为,你现在在工位上吗?”
 很快啊,看见了女神发来的消息,啪,李有为立马就点进了聊天窗口。

 “嗯”,以彼之道还施彼身,李有为简单回复了一个像女神往常一样回复他的字眼。

 很快啊,女神突然就来到了他的工位,眼眶里莹莹泛着泪花,一见面就劈头一句:“等闲变却故人心,却道故人心易变。有为,你可不可以不要这么高冷!”

 “气壮山河英雄泪,曲折缠绵儿女情。铁骨男儿担大道,最难消受美人恩。”

 李有为被女神这么一说,一下就云里雾里了,稀里糊涂就莫名其妙接了一个小需求,终究李有为还是又做了一次二十多岁的老实人。

 话说公司领导最近读了一些莫名其妙的书籍,开始提倡数据化治理,要求各个部门都该具有相关的数据思维,这样才不会被大数据时代淘汰。一时之间,公司上下,人人口中都挂着数据、图表、分析这些高大上的关键词语。

 李有为的女神自然也是其中的一员。这次她找到李有为是因为想做一个炫酷的词云图,然后再来一波很骚的数据分析,然而万事开头难,女神直接倒在了第一步数据预处理阶段。


 女神的需求其实很简单,就是将exp_job字段的期望岗位打散,然后求和计数,最后就可以制作岗位的词云图了。

 李有为一看,立马就知道这个问题应该怎么解决了。

一:老方法(新方法可以直接看二)

1、去除多余的字符,然后分割列

df = pd.read_csv("test.csv",encoding="gbk")
df_exp_job = df['exp_job'].map(lambda x:x.replace("[","").replace("]","").replace('"',"")) \.str.split(',', expand=True)

2、行转列

df_exp_job=df_exp_job.stack()

3、重置索引,将新生成的index,重置到原来的索引上,并为字段命名

df_exp_job = df_exp_job.reset_index(level=1, drop=True).rename('exp_job')

4、和原始数据合并

&emps;利用两个数据index索引进行合并,并将原始dataframe的exp_job删除

df = df.drop(['exp_job'], axis=1).join(df_exp_job)

5、简单聚合

res=df.groupby(['exp_job']).count().reset_index()
print(res)

  大功告成,但是使用过在spark使用过强大的explode打散方法后,李有为想了想,pandas肯定也有类似的方法,于是搜索了一下 pandas explode


 好家伙,官方文档果然有同样的方法。照着官方文档的例子,李有为直接开始了自己的代码改造之旅。

二:paddas explode

import pandas as pd
df = pd.read_csv("test.csv",encoding="gbk")
df=df.explode("exp_job")
print(df)
 一通操作猛如虎,最后发现结果没有改变,李有为瞬间傻眼了,幸好女神不在身边,不然就糗大了。

 深吸一口气,李有为看了看官方文档,和源码


 这个explode方法其实就是对李有为方法一的更好的一种封装,他columns参数的数据类型必须是str或者tuple(list也可,str不会被分割打散)

#看一下自己的数据类型
import pandas as pd
import json
df = pd.read_csv("test.csv",encoding="gbk")
df=df.explode("exp_job")
print(type(df['exp_job'][0]))
#<class 'str'>
#结果很显然是字符串类型,所以需要对字符串做处理
#鉴于女神给的数据已经很像python中的list类型了,只需要做稍加的处理,使用json模块将字符串转换成list就可以了

 最终代码如下,很简单,有木有,很粗暴,有没有。

import pandas as pd
import jsondf = pd.read_csv("test.csv",encoding="gbk")df['exp_job']=df['exp_job'].map(lambda x:json.loads(x))res=df.explode("exp_job").groupby(['exp_job']).count().reset_index().rename(columns={"name":"num"})print(res)

 注意:部分老铁运行可能会报错,那是因为pandas的版本过于老旧,重新升级pandas版本即可

卸载 pandas
pip uninstall pandas
pip install   pandas==0.25.3  -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

 启示:多看官方文档,多看源代码,总能得到意想不到的收获。

 当李有为把数据发送给女神时,女神不一会儿就给他送来了一杯温暖的奶茶,令女神意想不到的是,李有为这一次竟然破天荒的拒绝了她的好意,她向李有为询问原因。
 李有为温言道:“我想问一下,爱奇艺会员,你有吗?”

 李有为的这句话究竟有何深意,他与女神之间的故事有会有着怎样的进展,预知后事如何,请听下回分解。

pandas一列拆分成多行相关推荐

  1. python 列表多行_Python Pandas list列表数据列拆分成多行的方法实现

    1.实现的效果 示例代码: df=pd.DataFrame({'A':[1,2],'B':[[1,2],[1,2]]}) df Out[458]: A B 0 1 [1, 2] 1 2 [1, 2] ...

  2. 【数据平台】pandas将一列中的文本拆分成多行

    1.场景:如下图,要将cont中的字符串分割出词汇并单独成一行 2.一列中的文本拆分成多行的效果: 3.实现方法: 方法一: df=df.drop('cont', axis=1).join(df['c ...

  3. pandas中将每一行数据拆分成多行的方法

    一.应用场景 用pandas处理数据时,我们经常会遇到将一行拆分成多行,或者将一列拆分成多列的方法,今天主要讲第一个问题,第二个问题下次讲.举个例子:我现有的数据如下: 其中TrainData是我需要 ...

  4. 拆分列成多行_把订单按货品拆分成多行(上)

    办公的小伙伴们,今天小编来和大家分享. 如何将一个单元格中有多行数据拆分成多行. 看下图:要把订单按货品拆分成多行明细. 下面给出几种不同的方法. 一一一一一一一一一一一一一一一一一一一一一一 方法一 ...

  5. 单元格内多个姓名拆分成一列_把订单按货品拆分成多行

    办公的小伙伴们,今天小编来和大家分享:如何将一个单元格中有多行数据拆分成多行. 看下图:要把订单按货品拆分成多行明细. 下面给出几种不同的方法. 方法一:借word来拆分内容 Step1:把表格复制到 ...

  6. 单元格内多个姓名拆分成一列_excel将一列数据拆为多个表格-excel:如何将一个单元格拆分成多行或多列?...

    如何将一个Excel工作表的数据按一列的关键字拆分成... 工具/材料:Microsoft Office Excel2016版,Excel文档. 1.首先选中Excel文档,双击打开. 2.然后在该界 ...

  7. 将excel中的一个工作表按照某列拆分成多个sheet工作表

    如何将excel中的一个工作表按照某列拆分成多个sheet工作表呢?接下来就利用VBA工具来解决这个问题. 拆分之前的工作表: 拆分之后的工作表: 操作步骤具体如下: 第一步:打开需要拆分的表格文件: ...

  8. print python excel分隔_办公自动化 Python 小工具,对Excel文件,按某一列拆分成多个Excel文件或sheet...

    使用pandas.xlwings.os 库文件,对Excel文件,按某一列拆分成多个Excel文件或sheet,提高工作效率. # -*- coding: utf-8 -*- "" ...

  9. mysql根据分隔符将一行数据拆分成多行数据

    mysql根据分隔符将一行数据拆分成多行数据 文章目录 mysql根据分隔符将一行数据拆分成多行数据 关键函数 原始数据 处理结果展示 三种方式,相同的原理 使用MySql库中的自增序列表 自建自增序 ...

最新文章

  1. Docker 入门系列(5)- Docker 端口映射(映射所有IP地址、映射到指定地址和指定端口、映射指定地址任意端口、查看映射端口配置)
  2. R语言ggplot2可视化散点图、移除可视化图像中的多余的图例信息、使用scale_size函数移除数据点大小的图例(legend)
  3. [IOS] 'Double' is not convertible to 'CGFloat'
  4. iOS开发——UI基础-UIImage,UIImageView的使用
  5. VC++ 中ListCtrl经验总结
  6. 每次没事情的时候都去学校的活动室或者武术室
  7. 联海网站开发-操作说明-会员系统及诵读之星
  8. 简单聊聊模型的性能评估标准
  9. 织梦cms响应式影视传媒模板
  10. 【OJ8462】大盗阿福
  11. oracle crs 0184,ORACLE-RAC启动失败:CRS-0184: Cannot communicate with the CRS daem
  12. plantUML 学习
  13. MessageBox.Show常用的2个方法
  14. 计算机无线网络连接怎么弄,Win7系统如何设置无线网络连接?
  15. 互联网日报 | 瑞幸咖啡内部调查基本完成;12306官方支付宝小程序上线;华为openGauss正式开源...
  16. CSR8311/CSR8811 HCI vendor command说明
  17. SSRF利用协议中的万金油——Gopher
  18. IT人应该读的几本书
  19. excel 日期选择器_Excel日期选择器工具
  20. 中国空气炸锅行业现状分析及投资效益预测报告2022-2028年版

热门文章

  1. 教你怎么把iconfont转换成png透明图片
  2. [R语言]手把手教你如何绘图(万字)
  3. 【设计模式】用英雄联盟来解释代理模式
  4. 《Fundamentals Of Computer Graphics》虎书第三版翻译——第五章 线性代数
  5. Navicat for MySQL 安装以及初始创建连接,新建数据表
  6. java毕业生设计中小型连锁超市配送中心配送管理计算机源码+系统+mysql+调试部署+lw
  7. 【MySQL】这是我见过最有用的MySQL数据类型面试题,面了无数家总结的
  8. SQL Server菜鸟入门
  9. vue项目微前端试水
  10. MySQL插入数据时报错Cause: java.sql.SQLException: #HY000