Python中实现一行拆多行和多行并一行的示例代码


Posted in Python onSeptember 06, 2020

粉丝提问

今天粉丝提了下面这样一个问题,其中一个是"一行拆多行",另外一个是"多行并一行",貌似群友用power query已经解决了。但是基于Python怎么做呢?接着往下看。

Python中实现一行拆多行和多行并一行的示例代码

一行拆多行

上面这个问题我会提供两个思路,供大家选择,当然肯定是越简单得越好。每一种方法中都有一些好用的技巧,希望大家能够好好学习。

1)方法一

下方代码中有很多重要的知识点,需要我们下去好好学习一下,我这里只提供解体思路,关于每个知识点怎么用,希望大家下去自行研究学习。

  • Pandas.melt()函数的用法;
  • Series.str.split("/",expand=True)中,expand=True参数的用法;
  • Series.sort_values()对文本进行排序;
  • Python中enumerate()函数的用法;
import pandas as pd
# 读取数据
df = pd.read_excel("test1.xlsx",sheet_name="Sheet1")
# 将一列炸裂成多列
df[["类型1","类型2","类型3"]] = df["电影类型"].str.split("/",expand=True)
# 选取想要的列
df_final = df[["电影名","类型1","类型2","类型3"]]
# 将行专列
df_final = df_final.melt(id_vars=["电影名"],value_name="类型")
# 对“电影名”字段进行排序
df_final = df_final[["电影名","类型"]]
df_final.sort_values(by="电影名",inplace=True)
# 删除“类型==None”的行
for index,value in enumerate(df_final["类型"]):
  if value == None:
    df_final.drop(df_final.index[index],inplace=True)
df_final

结果如下:

Python中实现一行拆多行和多行并一行的示例代码

2)方法二

上述方法确实感觉复杂了,但是没办法,我之前的Pandas版本只有0.23.4,因此无法用explode()方法,进行炸裂操作。在pandas0.25版本的时候, DataFrame中才新增了一个explode方法, 专门用来将一行变多行。

Pandas.explode()函数的用法;

import pandas as pd
# 读取数据
df = pd.read_excel("test1.xlsx",sheet_name="Sheet1")
# 将一行拆分成列表形式,注意:这里不需要使用expand=True参数
df["type"] = df["电影类型"].str.split("/")
# 直接炸裂指定列
df.explode("type")

结果如下:

Python中实现一行拆多行和多行并一行的示例代码

多行并一行

这里没有使用什么特别的知识,好好理解Pandas中分组聚合应用某个函数,即可轻松解决这个问题。

import pandas as pd
# 读取数据
df = pd.read_excel("test1.xlsx",sheet_name="Sheet2")
# 分组聚合,应用某个函数
def func(df):
  return ','.join(df.values)
df = df.groupby(by='电影名').agg(func).reset_index()
df

结果如下:

Python中实现一行拆多行和多行并一行的示例代码

到此这篇关于Python中实现一行拆多行和多行并一行的示例代码的文章就介绍到这了,更多相关Python 一行拆多行和多行并一行内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的各种装饰器详解
Apr 11 Python
Python中转换角度为弧度的radians()方法
May 18 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
python字符串string的内置方法实例详解
May 14 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
Mar 14 Python
Python虚拟环境的原理及使用详解
Jul 02 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
简单了解Python3里的一些新特性
Jul 13 Python
python opencv将图片转为灰度图的方法示例
Jul 31 Python
Python中request的基本使用解决乱码问题
Apr 12 Python
Pytest单元测试框架如何实现参数化
Sep 05 #Python
Python实例方法、类方法、静态方法区别详解
Sep 05 #Python
Python装饰器如何实现修复过程解析
Sep 05 #Python
Python JSON常用编解码方法代码实例
Sep 05 #Python
Python直接赋值及深浅拷贝原理详解
Sep 05 #Python
Python数据库封装实现代码示例解析
Sep 05 #Python
Python‘==‘ 及 ‘is‘相关原理解析
Sep 05 #Python
You might like
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
实现复选框全选/全不选切换
2006/12/23 Javascript
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
女娲补天教学反思
2014/02/05 职场文书
安全保证书范文
2014/04/29 职场文书
优秀班集体申报材料
2014/12/25 职场文书
个人典型事迹材料
2014/12/30 职场文书
2015年环保局工作总结
2015/05/22 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技
app场景下uniapp的扫码记录
2022/07/23 Java/Android
vue实现简易音乐播放器
2022/08/14 Vue.js
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript