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的基础上,修改了代码,可 ...
最新文章
- 小程序实现瀑布流,获取图片高度分成两组数据的函数封装代码
- lightoj 1014
- 二十一、redis持久化之RDB
- vue 虚拟服务器,vue+webpack项目中使用dev-server搭建虚拟服务器,请求json文件数据,实现先后台分离开发...
- Simpleperf介绍
- Authentication-- 更改现有Sharepoint网站的认证方式,让其支持FBA:1.前期准备
- android alertdialog view,Android AlertDialog 方法setView(view,0,0,0,0)开发自定义对话框
- 不可不知的 Android strings.xml 那些事
- Javascript 脚本错误.
- python web开发框架 支持windows_基于Python的Web开发框架研究_曾浩
- Windows Vista SP2 和 Windows Server 2008 SP2 已经发布
- 机器学习最常用的算法
- PHP正则淘口令,Flutter代码锦囊---淘口令复制弹窗
- 【ftp上传文件失败】put: Access failed: 553 Could not create file. (passwd)(接详细配置1问题解决)
- oracle 在此 select 语句中缺少 into 子句,Go database/sql文档
- 项目经理版《野狼disco》
- 一个漂亮妹子的美团面试经历,4轮2小时,成功拿到Offer
- jsoup爬取驾考题库
- et结波导口转换_波导同轴转换
- php代码 加密,php文件加密操作流程
热门文章
- 20190914每日一句
- 190629每日一句
- 190527每日一句,励志| 为了成功,约束自己;有时候“再等等”,就再也等不到了
- Atitit 搜索与搜索领域的技术总结 目录 1. 搜索资料 各种文档累 office eml pdf zip	1 1.1. 搜索用的东东。。Es ffmpeg opencv	1 2. 自然语言处
- atitit.故障排除------有时会错误com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: soc
- Atitit.提升稳定性-----分析内存泄漏PermGen OOM跟解决之道...java
- atitit.hbnt orm db 新新增更新最佳实践o7
- Python : async和await、asyncio与aiofiles
- Python: hashlib库、sha256、md5
- 可观测性平台下的低代码技术实践