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 相关文章推荐
高性能web服务器框架Tornado简单实现restful接口及开发实例
Jul 16 Python
python获取图片颜色信息的方法
Mar 18 Python
Python中执行存储过程及获取存储过程返回值的方法
Oct 07 Python
对Python中Iterator和Iterable的区别详解
Oct 18 Python
Python 互换字典的键值对实例
Feb 12 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
Pytorch中的VGG实现修改最后一层FC
Jan 15 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
如何在django中运行scrapy框架
Apr 22 Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 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 分页类 扩展代码
2009/06/11 PHP
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
JavaScript 设计模式之组合模式解析
2010/04/09 Javascript
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
javascript产生随机数方法汇总
2016/01/25 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
深入解析Vue 组件命名那些事
2017/07/18 Javascript
koa-router源码学习小结
2018/09/07 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
在Python下进行UDP网络编程的教程
2015/04/29 Python
python PIL模块与随机生成中文验证码
2016/02/27 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
为什么说python更适合树莓派编程
2020/07/20 Python
Python特殊属性property原理及使用方法解析
2020/10/09 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
HTML文本属性&颜色控制属性的实现
2019/12/17 HTML / CSS
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
Lucene推荐的分页方式是什么?
2015/12/07 面试题
英语专业个人求职信范文
2014/02/01 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
货款欠条范本
2015/07/03 职场文书
教师节获奖感言
2015/07/31 职场文书
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
mysql insert 存在即不插入语法说明
2022/03/25 MySQL