数据

需求:将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. 小程序实现瀑布流,获取图片高度分成两组数据的函数封装代码
  2. lightoj 1014
  3. 二十一、redis持久化之RDB
  4. vue 虚拟服务器,vue+webpack项目中使用dev-server搭建虚拟服务器,请求json文件数据,实现先后台分离开发...
  5. Simpleperf介绍
  6. Authentication-- 更改现有Sharepoint网站的认证方式,让其支持FBA:1.前期准备
  7. android alertdialog view,Android AlertDialog 方法setView(view,0,0,0,0)开发自定义对话框
  8. 不可不知的 Android strings.xml 那些事
  9. Javascript 脚本错误.
  10. python web开发框架 支持windows_基于Python的Web开发框架研究_曾浩
  11. Windows Vista SP2 和 Windows Server 2008 SP2 已经发布
  12. 机器学习最常用的算法
  13. PHP正则淘口令,Flutter代码锦囊---淘口令复制弹窗
  14. 【ftp上传文件失败】put: Access failed: 553 Could not create file. (passwd)(接详细配置1问题解决)
  15. oracle 在此 select 语句中缺少 into 子句,Go database/sql文档
  16. 项目经理版《野狼disco》
  17. 一个漂亮妹子的美团面试经历,4轮2小时,成功拿到Offer
  18. jsoup爬取驾考题库
  19. et结波导口转换_波导同轴转换
  20. php代码 加密,php文件加密操作流程

热门文章

  1. 20190914每日一句
  2. 190629每日一句
  3. 190527每日一句,励志| 为了成功,约束自己;有时候“再等等”,就再也等不到了
  4. Atitit 搜索与搜索领域的技术总结 目录 1. 搜索资料 各种文档累 office eml pdf zip 1 1.1. 搜索用的东东。。Es ffmpeg opencv 1 2. 自然语言处
  5. atitit.故障排除------有时会错误com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: soc
  6. Atitit.提升稳定性-----分析内存泄漏PermGen OOM跟解决之道...java
  7. atitit.hbnt orm db 新新增更新最佳实践o7
  8. Python : async和await、asyncio与aiofiles
  9. Python: hashlib库、sha256、md5
  10. 可观测性平台下的低代码技术实践