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 相关文章推荐
以911新闻为例演示Python实现数据可视化的教程
Apr 23 Python
在Python的Django框架中获取单个对象数据的简单方法
Jul 17 Python
深入理解Python中字典的键的使用
Aug 19 Python
python使用sqlite3时游标使用方法
Mar 13 Python
python ddt实现数据驱动
Mar 14 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 Python
Django Form and ModelForm的区别与使用
Dec 06 Python
python实现连连看游戏
Feb 14 Python
python多进程下的生产者和消费者模型
May 07 Python
Python-jenkins模块获取jobs的执行状态操作
May 12 Python
使用django自带的user做外键的方法
Nov 30 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实现smarty模板无限极分类的方法
2015/12/07 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
DOM相关内容速查手册
2007/02/07 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
Python的函数嵌套的使用方法
2014/01/24 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
党员自我评价分享
2013/12/13 职场文书
人力资源经理自我评价
2014/01/04 职场文书
学习演讲稿范文
2014/05/10 职场文书
建筑工地大门标语
2014/06/18 职场文书
通知范文怎么写
2015/04/16 职场文书
欢送领导祝酒词
2015/08/12 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python