Python中实现一行拆多行和多行并一行的示例代码
作者:Huang supreme 发布时间:2021-05-20 12:32:26
标签:Python,一行拆多行,多行并一行
粉丝提问
今天粉丝提了下面这样一个问题,其中一个是"一行拆多行",另外一个是"多行并一行",貌似群友用power query已经解决了。但是基于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
结果如下:
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")
结果如下:
多行并一行
这里没有使用什么特别的知识,好好理解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
结果如下:
来源:https://blog.csdn.net/weixin_41261833/article/details/108135992


猜你喜欢
- 模块介绍Python提供了importlib包作为标准库的一部分。目的就是提供Python中import语句的实现(以及__import__
- 本文主要是关于matplotlib的一些基本用法。Demoimport matplotlib.pyplot as pltimport num
- 本文旨在挖掘表格在艺术创意方面的一些功能效果。运行代码框<script language="JavaScript"
- 前言个人一直觉得对学习任何知识而言,概念是相当重要的。掌握了概念和原理,细节可以留给实践去推敲。掌握的关键在于理解,通过具体的实例和实际操作
- 方法一:var tableInit = table.render({ elem:
- 本文实例为大家分享了python实现网页录音效果的具体代码,供大家参考,具体内容如下服务器:tornado语言:python,JS,html
- 目录1安装loguru|2loguru简单使用|3loguru保留日志文件|4loguru字符串输出|5loguru封装类,可以直接拿去用!
- --SQL正则替换函数 CREATE function dbo.regexReplace ( @source ntext, --原字符串 @
- 公司技术背景:数据库访问类(xxx.DataBase.Dll)调用存储过程实现数据库的访问。技术方案一:压缩时间下程序员写出的第一个版本,仅
- 1、Python数据存储(压缩)(1)numpy.save , numpy.savez , scipy.io.savematnumpy和sc
- 一,Socket编程(1)Socket方法介绍Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链接“,而
- <html><body><table border=1> <? $id=@mssql_connec
- 页面跳转页面跳转的url中必须在最后会自动添加【\】,所以在urls.py的路由表中需要对应添加【\】from django.shortcu
- 前言了解了D3.js的基本开发和组件以后,我们开始应用它激动人心之处:绚丽的预定义图形,应用D3.js,我们在它的示例文件的基础上稍加变动即
- 在使用Ajax过程中,有时候总会遇到一些难题,浏览器兼容、编码、IE下的特殊处理等等,偶尔会搞的人头昏脑胀哭笑不得,这里列一些小贴士,或许有
- 这个教程,我们将展示如何用python创建一个井字游戏。 其中我们将使用函数、数组、if条件语句、while循环语句和错误捕获等
- 用Python写个注册登录功能,供大家参考,具体内容如下本文是用Python写一个注册登录功能,难度不大,很适合练手主要就是用列表和字典,以
- 为了构造透明的叠加层,需要准备两个图像:(1)原始图片;(2)要 “叠加”在第一个图像上的图像(包含某种级别的Alpha透明度)。透明叠加层
- 第一、几种常用方法读取TXT文档:urlopen()读取PDF文档:pdfminer3k第二、乱码问题(1)、from urllib.req
- 中文文本中可能出现的标点符号来源比较复杂,通过匹配等手段对他们处理的时候需要格外小心,防止遗漏。以下为在下处理中文标点的时候采用的两种方法: