pandas 行列转换
pandas 行列转换总结
一个单元格多行扩展(纵向扩展)
import pandas as pd# 创建测试数据 test_data = pd.DataFrame({'name':['张三','李四','王五'],'love':['刘亦菲,陈奕迅','汪峰,周杰伦','迪迦,大谷,格尔赞']}) print(f'转换前:\n{test_data}',end='\n------------------------\n')# 转换代码 test_data['love'] = test_data['love'].str.split(',') test_data = test_data.explode('love') print(f'转换后: \n{test_data}',end='\n------------------------\n')转换前:name love 0 张三 刘亦菲,陈奕迅 1 李四 汪峰,周杰伦 2 王五 迪迦,大谷,格尔赞 ------------------------ 转换后: name love 0 张三 刘亦菲 0 张三 陈奕迅 1 李四 汪峰 1 李四 周杰伦 2 王五 迪迦 2 王五 大谷 2 王五 格尔赞 ------------------------
一个单元格多列扩展(横向扩展)
# 创建测试数据 test_data = pd.DataFrame({'name':['张三','李四','王五'],'love':['刘亦菲,陈奕迅','汪峰,周杰伦','迪迦,格尔赞']}) print(f'转换前:\n{test_data}',end='\n------------------------\n')# 转换代码 test_data[['love_1','love_2']] = test_data['love'].str.split(',',expand=True) test_data.drop(columns='love',inplace=True) print(f'转换后: \n{test_data}',end='\n------------------------\n')转换前:name love 0 张三 刘亦菲,陈奕迅 1 李四 汪峰,周杰伦 2 王五 迪迦,格尔赞 ------------------------ 转换后: name love_1 love_2 0 张三 刘亦菲 陈奕迅 1 李四 汪峰 周杰伦 2 王五 迪迦 格尔赞 -------------------------
列转行(某些列转换为表头)
# 创建测试数据 test_data = pd.DataFrame({'name':['张三','张三','李四','李四','王五','王五'],'course':['数学','语文','数学','语文','数学','语文'],'score':[86,34,56,78,87,95]}) print(f'转换前:\n{test_data}',end='\n------------------------\n')# 转换代码 test_data = pd.pivot(data=test_data # 待转换df,index='name' # df交叉后行,columns='course' # df交叉后的列,values='score' # df交叉后数据(不发生聚合)) test_data.reset_index(inplace=True)print(f'转换后: \n{test_data}',end='\n------------------------\n')转换前:name course score 0 张三 数学 86 1 张三 语文 34 2 李四 数学 56 3 李四 语文 78 4 王五 数学 87 5 王五 语文 95 ------------------------ 转换后: course name 数学 语文 0 张三 86 34 1 李四 56 78 2 王五 87 95 ------------------------
行转列(部分表头转换位一列数据值)
# 创建测试数据 test_data = pd.DataFrame({'name':['张三','李四','王五'],'数学':[86,56,87],'语文':[34,78,95]}) print(f'转换前:\n{test_data}',end='\n------------------------\n')# 转换代码 test_data = pd.melt(frame=test_data # 待转换df,id_vars='name' # 固定的列,value_vars=['数学','语文'] # 待转换的列名,var_name='course' # 行转列转换后的列名称,value_name='score' # 最后数据列名称) # test_data.reset_index(inplace=True)print(f'转换后: \n{test_data}',end='\n------------------------\n')转换前:name 数学 语文 0 张三 86 34 1 李四 56 78 2 王五 87 95 ------------------------ 转换后: name course score 0 张三 数学 86 1 李四 数学 56 2 王五 数学 87 3 张三 语文 34 4 李四 语文 78 5 王五 语文 95 ------------------------
多列转两列
# 创建测试数据 test_data = pd.DataFrame({'name':['张三','李四','王五'],'科目1':['数学','数学','数学'],'科目1分数':[34,78,95],'科目2':['语文','语文','语文'],'科目2分数':[86,56,87]}) print(f'转换前:\n{test_data}',end='\n------------------------\n')# 转换代码 test_data = pd.lreshape(data=test_data # 待转换数据,groups={'科目':['科目1','科目2'],'分数':['科目1分数','科目2分数']} ,dropna=False # 是否删除空值)print(f'转换后: \n{test_data}',end='\n------------------------\n')转换前:name 科目1 科目1分数 科目2 科目2分数 0 张三 数学 34 语文 86 1 李四 数学 78 语文 56 2 王五 数学 95 语文 87 ------------------------ 转换后: name 科目 分数 0 张三 数学 34 1 李四 数学 78 2 王五 数学 95 3 张三 语文 86 4 李四 语文 56 5 王五 语文 87 ------------------------
pandas 行列转换相关推荐
- python办公自动化(9)利用pandas的行列转换处理排班表
python办公自动化(9)利用pandas的行列转换处理排班表 原始数据: 处理效果: 1.pandas行转列 #!/usr/bin/python # -*- coding: gbk -*- imp ...
- oracle行列转换关联union的方式_几行代码轻松玩转 Excel 行列转换
几行代码轻松玩转 Excel 行列转换 下面这种交叉式的 Excel 表是很常见的格式,用来填写和查看都比较方便: 但是,如果想做进一步的统计分析,这种格式就不方便了,需要行列转换,变成如下格式的明细 ...
- [转载]SQL Server行列转换实现
一.Pivot和UnPivot介绍 1.Pivot介绍 PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVO ...
- SQL Server 行列转换(2)
参考前一个例子http://www.cnblogs.com/insus/articles/1969896.html,现想使用另外一种方式来处理行列转换,实现下面效果: 参考代码: View Code ...
- Oracle 行列转换总结
行列转换包括以下六种情况: *列转行 *行转列 *多列转换成字符串 *多行转换成字符串 *字符串转换成多列 *字符串转换成多行 下面分别进行举例介绍. 首先声明一点,有些例子需要如下10g及以后才有的 ...
- SAP行列转换的一个方法
经常会遇到行列转换的需求.于是就找到了这样的一段代码.虽然也有其他的转换方法.但是都没有及时的记录.于是 就想起了将这段经典代码写在这里. TABLES spfli. data: it_dat ...
- SQL语句行列转换两种方法 case ...when 和pivot函数应用
2019独角兽企业重金招聘Python工程师标准>>> SQL语句行列转换两种方法 case ...when 和pivot函数应用SQL语句行列转换两种方法 case ...when ...
- DataStage系列教程 (Pivot_Enterprise 行列转换)
有人提到Pivot_Enterprise这个组件,之前没有用过,今天捣腾了会,写下来供以后参考,如果有什么不对的,还请多指出,谢谢! Pivot_Enterprise主要用来进行行列转换. 1 示例 ...
- 用python做数据分析(行列转换)
python行列转换 用reshape是有问题的,因为这是根据一个顺序的数进行遍历的 但是,用下面这个函数就有了对应的操作 C:\Users\Administrator>python Pytho ...
- SQL Server 2005之PIVOT/UNPIVOT行列转换
SQL Server 2005之PIVOT/UNPIVOT行列转换 作者: NinGoo(http://ningoo.itpub.net) 发表于: 2007.04.18 11:49 分类: SQL ...
最新文章
- Ubuntu上Vim安装NERDTree插件操作步骤
- linux下activemq安装与配置
- android 启动速度优化终极方案
- linux 进程数量限制,LINUX下每进程限制线程数量
- 003_commons-logging与slf4j和log4j与logback
- html弧形列表效果,web前端入门到实战:html5网页特效-弧形菜单
- Asp.net 面向接口可扩展框架之类型转化基础服务
- 【从入门到放弃-Java】并发编程-NIO-Buffer
- Mybatis与iBatis的主要区别对比
- 高性能分页REST API查询生成器
- H5实现俄罗斯方块(一)
- 蓝桥杯笔记:DFS(深度优先搜索)解决问题
- linux 运行 ccs,ccs_linux
- [不限速百度云]两款百度网盘破解版分享
- 华为外包公司一面二面三面回顾
- 谈谈对腾讯360之争的观感
- 最新2021计算机排名中国大学排名,2020-2021年计算机类专业排名_中国大学本科教育按专业类排行榜_中国科教评价网...
- Java实现合成图片
- 慕课moocpython答案_中国大学慕课moocPython编程基础作业答案
- Big Sur 系统无法修改系统文件