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 自动安装 Rising 杀毒软件
Apr 24 Python
跟老齐学Python之赋值,简单也不简单
Sep 24 Python
解析Python编程中的包结构
Oct 25 Python
Python 中的 else详解
Apr 23 Python
详解python实现小波变换的一个简单例子
Jul 18 Python
Python的bit_length函数来二进制的位数方法
Aug 27 Python
python爬虫 正则表达式解析
Sep 28 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
Win下PyInstaller 安装和使用教程
Dec 25 Python
MATLAB数学建模之画图汇总
Jul 16 Python
粗暴解决CUDA out of memory的问题
May 22 Python
Python 操作pdf pdfplumber读取PDF写入Exce
Aug 14 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在线代理转向代码
2012/05/05 PHP
php单例模式实现(对象只被创建一次)
2012/12/05 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
js获取html文件的思路及示例
2013/09/17 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
angularJS开发注意事项
2018/05/26 Javascript
详解Vue 换肤方案验证
2019/08/28 Javascript
Python简单实现enum功能的方法
2016/04/25 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
劳资协议书范本
2014/04/23 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
关于环保的标语
2014/06/13 职场文书
Python Matplotlib绘制条形图的全过程
2021/10/24 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python