数据

需求:将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行列拆分相关推荐

  1. word表格分开快捷键_word文档如何快速拆分表格,干货!怎样快速拆分表格以及快速合并表格技巧介绍...

    原标题:word文档如何快速拆分表格,干货!怎样快速拆分表格以及快速合并表格技巧介绍 word是一款文字处理器应用程序,我们大家在生活中工作中都会频繁的使用到word写一些文字.素材等等内容,我们记录 ...

  2. python dataframe 列筛选_pandas系列之DataFrame 行列数据筛选实例

    一.对DataFrame的认知 DataFrame的本质是行(index)列(column)索引+多列数据. 为了简化理解,我们不妨换个思路- 现实中,为了简化对一件事物的描述,我们会选择几个特征. ...

  3. python如何按列输出_pandas中的DataFrame按指定顺序输出所有列的方法

    问题: 输出新建的DataFrame对象时,DataFrame中各列的显示顺序和DataFrame定义中的顺序不一致. 例如: import pandas as pd grades = [48,99, ...

  4. 【Python学习系列十五】pandas库DataFrame行列操作使用方法

    参考:http://pandas.pydata.org/pandas-docs/stable/api.html#dataframe data['w'] #选择表格中的'w'列,使用类字典属性,返回的是 ...

  5. wps vba宏插件_合并和拆分表格,告别VBA和插件,用WPS表格自带功能一键搞定,而且免费!...

    Excel情报局 生产搬运分享Excel基础技能 OFFICE知识文艺青年 用1%的Excel基础搞定99%的日常工作 做一个有文艺范的Excel公众号 Excel是门手艺 玩转需要勇气 表哥带你玩转 ...

  6. 【拆分表格与批量重命名】

    拆分表格与批量重命名 文章目录 拆分表格与批量重命名 前言 一.拆分表格 1.软件 2.步骤 二.批量重命名 1.软件 2.步骤 前言 表格内容很多,比如工资表,可以邮件单个群发: 具体需求,将一个1 ...

  7. python - pandas 之 dataframe - 行列筛选/遍历/新增/删除/连接/合并/修改/跨表update

    目录 1.dataframe行列筛选 2.dataframe遍历行列 3.dataframe新增行列 4.drop删除指定行列 5.dataframe修改行列值 6.merge连接列 7.append ...

  8. python 拆分excel工作表_Python几行代码轻松拆分表格

    Python几行代码轻松拆分表格 作者:梅朵 微信公众号:实用办公编程技能 微信号:Excel-Python 什么?,Python几行代码竟然可以按指定轻松拆分表格? 将test.xls中的数据按地区 ...

  9. python按行拆分表格_Python几行代码轻松拆分表格

    Python几行代码轻松拆分表格 作者:梅朵 微信公众号:实用办公编程技能 微信号:Excel-Python 什么?,Python几行代码竟然可以按指定轻松拆分表格? 将test.xls中的数据按地区 ...

  10. 表格某一列不固定其余全固定_如何利用Python一键拆分表格并进行邮件发送~

    因为平时经常要将 一张表 拆成工作簿,拆完还要发给不同的对象,工作又使用outlook发邮件,所以本文调用outlook账号进行邮件的发送作为示例:在 一张表拆成多个sheet的基础上,修改了代码,可 ...

最新文章

  1. 解决gitte提交报错 error: GE007: Your push would publish a private email address.
  2. 【Qt】Qt再学习(三):Chart Themes Example(常用图表)
  3. ansible及ansible-palybook使用(持续更新)
  4. 在五分钟内学习使用Python进行类型转换
  5. [html] 如何阻止屏幕旋转时自动调整字体的大小?
  6. 弹性计算平台技术:云服务器“安全”“稳定”“弹性”的基石
  7. CSU 1112 机器人的指令
  8. HBase超级详细总结
  9. Java示例:如何执行进程并读取输出
  10. LayaAir TTF字体使用
  11. 【毕业设计源码】基于SSM的小程序任务调度管理信息系统设计与实现
  12. 明小子3.5检测网站应用
  13. python长度单位转化_所有长度单位的换算
  14. IDE也卷了,微软杀入嵌入式IDE
  15. 《Machine Learning in Action》—— 白话贝叶斯,“恰瓜群众”应该恰好瓜还是恰坏瓜
  16. 局部线性嵌入(Locally Linear Embedding,简称LLE)
  17. 计算机组成原理 实验五 单周期cpu
  18. NYNU_ACM 实验室招新月赛题解
  19. redis---incr命令
  20. python应用程序无法正常启动0xc0000142_Win7系统出现netsh.exe应用程序无法正常启动0xc0000142解决方法...

热门文章

  1. 在某个文件夹中打开 cmd黑窗口
  2. origin 复制与数据转置
  3. 沃尔沃汽车:通过基于模型的开发工具实现汽车软件模型结构度量
  4. Atitit 微服务的一些理论 目录 1. 微服务的4个设计原则和19个解决方案 1 2. 微服务应用4个设计原则 1 2.1. AKF拆分原则 2 2.2. 前后端分离 2 2.3. 无状态服务
  5. Atitit uri url urn 的概念区别 与联系 目录 1.1. 概念图 uri包括url和urn。。Urn一般是相对路径。。。 1 1.2. 统一资源名称 (Uniform Resourc
  6. paip.python错误解决17
  7. paip.提升安全性----软键盘的弱点
  8. paip.使用继承机制来实现控制反转或依赖倒置
  9. Python : Arrow、Pyarrow库、以及与Julia互读
  10. 一文读懂全球CTRM市场的前世今生