pandas一列拆分成多行
前言
冬日游,似水云雪落满头。
莫是谁家少年不知愁。
纵无心,跌入云泥,
相看笑不休!
好久没有女神的信,好久没有和她谈心,怀念她柔情似水的眼睛,是李有为加班夜晚中的星星……
女神失恋的第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一列拆分成多行相关推荐
- 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] ...
- 【数据平台】pandas将一列中的文本拆分成多行
1.场景:如下图,要将cont中的字符串分割出词汇并单独成一行 2.一列中的文本拆分成多行的效果: 3.实现方法: 方法一: df=df.drop('cont', axis=1).join(df['c ...
- pandas中将每一行数据拆分成多行的方法
一.应用场景 用pandas处理数据时,我们经常会遇到将一行拆分成多行,或者将一列拆分成多列的方法,今天主要讲第一个问题,第二个问题下次讲.举个例子:我现有的数据如下: 其中TrainData是我需要 ...
- 拆分列成多行_把订单按货品拆分成多行(上)
办公的小伙伴们,今天小编来和大家分享. 如何将一个单元格中有多行数据拆分成多行. 看下图:要把订单按货品拆分成多行明细. 下面给出几种不同的方法. 一一一一一一一一一一一一一一一一一一一一一一 方法一 ...
- 单元格内多个姓名拆分成一列_把订单按货品拆分成多行
办公的小伙伴们,今天小编来和大家分享:如何将一个单元格中有多行数据拆分成多行. 看下图:要把订单按货品拆分成多行明细. 下面给出几种不同的方法. 方法一:借word来拆分内容 Step1:把表格复制到 ...
- 单元格内多个姓名拆分成一列_excel将一列数据拆为多个表格-excel:如何将一个单元格拆分成多行或多列?...
如何将一个Excel工作表的数据按一列的关键字拆分成... 工具/材料:Microsoft Office Excel2016版,Excel文档. 1.首先选中Excel文档,双击打开. 2.然后在该界 ...
- 将excel中的一个工作表按照某列拆分成多个sheet工作表
如何将excel中的一个工作表按照某列拆分成多个sheet工作表呢?接下来就利用VBA工具来解决这个问题. 拆分之前的工作表: 拆分之后的工作表: 操作步骤具体如下: 第一步:打开需要拆分的表格文件: ...
- print python excel分隔_办公自动化 Python 小工具,对Excel文件,按某一列拆分成多个Excel文件或sheet...
使用pandas.xlwings.os 库文件,对Excel文件,按某一列拆分成多个Excel文件或sheet,提高工作效率. # -*- coding: utf-8 -*- "" ...
- mysql根据分隔符将一行数据拆分成多行数据
mysql根据分隔符将一行数据拆分成多行数据 文章目录 mysql根据分隔符将一行数据拆分成多行数据 关键函数 原始数据 处理结果展示 三种方式,相同的原理 使用MySql库中的自增序列表 自建自增序 ...
最新文章
- Docker 入门系列(5)- Docker 端口映射(映射所有IP地址、映射到指定地址和指定端口、映射指定地址任意端口、查看映射端口配置)
- R语言ggplot2可视化散点图、移除可视化图像中的多余的图例信息、使用scale_size函数移除数据点大小的图例(legend)
- [IOS] 'Double' is not convertible to 'CGFloat'
- iOS开发——UI基础-UIImage,UIImageView的使用
- VC++ 中ListCtrl经验总结
- 每次没事情的时候都去学校的活动室或者武术室
- 联海网站开发-操作说明-会员系统及诵读之星
- 简单聊聊模型的性能评估标准
- 织梦cms响应式影视传媒模板
- 【OJ8462】大盗阿福
- oracle crs 0184,ORACLE-RAC启动失败:CRS-0184: Cannot communicate with the CRS daem
- plantUML 学习
- MessageBox.Show常用的2个方法
- 计算机无线网络连接怎么弄,Win7系统如何设置无线网络连接?
- 互联网日报 | 瑞幸咖啡内部调查基本完成;12306官方支付宝小程序上线;华为openGauss正式开源...
- CSR8311/CSR8811 HCI vendor command说明
- SSRF利用协议中的万金油——Gopher
- IT人应该读的几本书
- excel 日期选择器_Excel日期选择器工具
- 中国空气炸锅行业现状分析及投资效益预测报告2022-2028年版
热门文章
- 教你怎么把iconfont转换成png透明图片
- [R语言]手把手教你如何绘图(万字)
- 【设计模式】用英雄联盟来解释代理模式
- 《Fundamentals Of Computer Graphics》虎书第三版翻译——第五章 线性代数
- Navicat for MySQL 安装以及初始创建连接,新建数据表
- java毕业生设计中小型连锁超市配送中心配送管理计算机源码+系统+mysql+调试部署+lw
- 【MySQL】这是我见过最有用的MySQL数据类型面试题,面了无数家总结的
- SQL Server菜鸟入门
- vue项目微前端试水
- MySQL插入数据时报错Cause: java.sql.SQLException: #HY000