python按行拆分表格_Pandas进阶之DataFrame行列拆分
数据
需求:将Brands_rank列中的不同品牌名,单独列出来
观察数据:不同的品牌名,由横杆(-)隔开,第3行只有1个横杆(-)
为实现需求,可以将Brands_rank列拆为3列,或者将3行Brands_rank数据拆为8行。
# -*- coding:utf-8 -*-
import pandas as pd
import numpy as np
df
Type Brands_rank
0 Computer Mac-Dell-Lenovo
1 Phone Mac-XiaoMi-HuaWei
2 Pad Mac-HuaWei
一列拆多列
获取Type列
df_column = df.Type.to_frame()
print(df_column)
Type
0 Computer
1 Phone
2 Pad
基于Brands_rank列构造多列
方法一:当截取的内容长度和位置固定时,可直接使用字符串切片,本例中,以截取Brands_rank的Mac为例
df_column['Brands-First'] = df.Brands_rank.astype('str').str[0:3]
print(df_column)
Type Brands-First
0 Computer Mac
1 Phone Mac
2 Pad Mac
方法二:当截取的内容长度不固定时,如Brands_rank中横杆(-)的中间部分,字符串长度不一致,使用字符串分割函数split()
df_column['Brands-Second'] = df.Brands_rank.apply(lambda x: x.split('-')[1])
print(df_column)
Type Brands-First Brands-Second
0 Computer Mac Dell
1 Phone Mac XiaoMi
2 Pad Mac HuaWei
方法三:当分隔符个数不同时,需要对分隔符的个数做判断,本例中是横杆(-),其个数不够2个时返回None。一列拆为3列的结果如下:
df_column['Brands-Third'] = df.Brands_rank.apply(lambda x: x.split('-')[2] if x.count('-') >= 2 else np.nan)
print(df_column)
Type Brands-First Brands-Second Brands-Third
0 Computer Mac Dell Lenovo
1 Phone Mac XiaoMi HuaWei
2 Pad Mac HuaWei NaN
一行拆多行
方法一:基于一列拆多列的结果,多次选取列再拼接。该方法容易理解,前提是需要先实现一列拆多列、代码冗余不优雅
df_index_1 = df_column[['Type', 'Brands-First']].rename(columns={'Brands-First':'Brands'})
df_index_2 = df_column[['Type', 'Brands-Second']].rename(columns={'Brands-Second':'Brands'})
df_index_3 = df_column[['Type', 'Brands-Third']].rename(columns={'Brands-Third':'Brands'})
df_index = pd.concat([df_index_1, df_index_2, df_index_3]).dropna().sort_index()
print(df_index)
Type Brands
0 Computer Mac
0 Computer Dell
0 Computer Lenovo
1 Phone Mac
1 Phone XiaoMi
1 Phone HuaWei
2 Pad Mac
2 Pad HuaWei
方法二、直接对Brands_rank列进行分割(split),再堆叠(stack)处理,堆叠后会出现多级索引,删除多级索引后再拼接。3行拆分为8行的结果如下:
df_index = df.Brands_rank.str.split('-', expand=True).stack().to_frame()
df_index = df_index.reset_index(level=1, drop=True).rename(columns={0:'Brands'})
df[['Type']].join(df_index)
Type Brands
0 Computer Mac
0 Computer Dell
0 Computer Lenovo
1 Phone Mac
1 Phone XiaoMi
1 Phone HuaWei
2 Pad Mac
2 Pad HuaWei
python按行拆分表格_Pandas进阶之DataFrame行列拆分相关推荐
- word表格分开快捷键_word文档如何快速拆分表格,干货!怎样快速拆分表格以及快速合并表格技巧介绍...
原标题:word文档如何快速拆分表格,干货!怎样快速拆分表格以及快速合并表格技巧介绍 word是一款文字处理器应用程序,我们大家在生活中工作中都会频繁的使用到word写一些文字.素材等等内容,我们记录 ...
- python dataframe 列筛选_pandas系列之DataFrame 行列数据筛选实例
一.对DataFrame的认知 DataFrame的本质是行(index)列(column)索引+多列数据. 为了简化理解,我们不妨换个思路- 现实中,为了简化对一件事物的描述,我们会选择几个特征. ...
- python如何按列输出_pandas中的DataFrame按指定顺序输出所有列的方法
问题: 输出新建的DataFrame对象时,DataFrame中各列的显示顺序和DataFrame定义中的顺序不一致. 例如: import pandas as pd grades = [48,99, ...
- 【Python学习系列十五】pandas库DataFrame行列操作使用方法
参考:http://pandas.pydata.org/pandas-docs/stable/api.html#dataframe data['w'] #选择表格中的'w'列,使用类字典属性,返回的是 ...
- wps vba宏插件_合并和拆分表格,告别VBA和插件,用WPS表格自带功能一键搞定,而且免费!...
Excel情报局 生产搬运分享Excel基础技能 OFFICE知识文艺青年 用1%的Excel基础搞定99%的日常工作 做一个有文艺范的Excel公众号 Excel是门手艺 玩转需要勇气 表哥带你玩转 ...
- 【拆分表格与批量重命名】
拆分表格与批量重命名 文章目录 拆分表格与批量重命名 前言 一.拆分表格 1.软件 2.步骤 二.批量重命名 1.软件 2.步骤 前言 表格内容很多,比如工资表,可以邮件单个群发: 具体需求,将一个1 ...
- python - pandas 之 dataframe - 行列筛选/遍历/新增/删除/连接/合并/修改/跨表update
目录 1.dataframe行列筛选 2.dataframe遍历行列 3.dataframe新增行列 4.drop删除指定行列 5.dataframe修改行列值 6.merge连接列 7.append ...
- python 拆分excel工作表_Python几行代码轻松拆分表格
Python几行代码轻松拆分表格 作者:梅朵 微信公众号:实用办公编程技能 微信号:Excel-Python 什么?,Python几行代码竟然可以按指定轻松拆分表格? 将test.xls中的数据按地区 ...
- python按行拆分表格_Python几行代码轻松拆分表格
Python几行代码轻松拆分表格 作者:梅朵 微信公众号:实用办公编程技能 微信号:Excel-Python 什么?,Python几行代码竟然可以按指定轻松拆分表格? 将test.xls中的数据按地区 ...
- 表格某一列不固定其余全固定_如何利用Python一键拆分表格并进行邮件发送~
因为平时经常要将 一张表 拆成工作簿,拆完还要发给不同的对象,工作又使用outlook发邮件,所以本文调用outlook账号进行邮件的发送作为示例:在 一张表拆成多个sheet的基础上,修改了代码,可 ...
最新文章
- 解决gitte提交报错 error: GE007: Your push would publish a private email address.
- 【Qt】Qt再学习(三):Chart Themes Example(常用图表)
- ansible及ansible-palybook使用(持续更新)
- 在五分钟内学习使用Python进行类型转换
- [html] 如何阻止屏幕旋转时自动调整字体的大小?
- 弹性计算平台技术:云服务器“安全”“稳定”“弹性”的基石
- CSU 1112 机器人的指令
- HBase超级详细总结
- Java示例:如何执行进程并读取输出
- LayaAir TTF字体使用
- 【毕业设计源码】基于SSM的小程序任务调度管理信息系统设计与实现
- 明小子3.5检测网站应用
- python长度单位转化_所有长度单位的换算
- IDE也卷了,微软杀入嵌入式IDE
- 《Machine Learning in Action》—— 白话贝叶斯,“恰瓜群众”应该恰好瓜还是恰坏瓜
- 局部线性嵌入(Locally Linear Embedding,简称LLE)
- 计算机组成原理 实验五 单周期cpu
- NYNU_ACM 实验室招新月赛题解
- redis---incr命令
- python应用程序无法正常启动0xc0000142_Win7系统出现netsh.exe应用程序无法正常启动0xc0000142解决方法...
热门文章
- 在某个文件夹中打开 cmd黑窗口
- origin 复制与数据转置
- 沃尔沃汽车:通过基于模型的开发工具实现汽车软件模型结构度量
- Atitit 微服务的一些理论 目录 1. 微服务的4个设计原则和19个解决方案	1 2. 微服务应用4个设计原则	1 2.1. AKF拆分原则	2 2.2. 前后端分离	2 2.3. 无状态服务
- Atitit uri url urn 的概念区别 与联系 目录 1.1. 概念图 uri包括url和urn。。Urn一般是相对路径。。。	1 1.2. 统一资源名称 (Uniform Resourc
- paip.python错误解决17
- paip.提升安全性----软键盘的弱点
- paip.使用继承机制来实现控制反转或依赖倒置
- Python : Arrow、Pyarrow库、以及与Julia互读
- 一文读懂全球CTRM市场的前世今生