pandas 行列转换总结

  1. 一个单元格多行扩展(纵向扩展)

    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   王五  格尔赞
    ------------------------
  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   王五     迪迦    格尔赞
    -------------------------
    
  3. 列转行(某些列转换为表头)

    # 创建测试数据
    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
    ------------------------
    
  4. 行转列(部分表头转换位一列数据值)

    # 创建测试数据
    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
    ------------------------
    
  5. 多列转两列

    # 创建测试数据
    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 行列转换相关推荐

  1. python办公自动化(9)利用pandas的行列转换处理排班表

    python办公自动化(9)利用pandas的行列转换处理排班表 原始数据: 处理效果: 1.pandas行转列 #!/usr/bin/python # -*- coding: gbk -*- imp ...

  2. oracle行列转换关联union的方式_几行代码轻松玩转 Excel 行列转换

    几行代码轻松玩转 Excel 行列转换 下面这种交叉式的 Excel 表是很常见的格式,用来填写和查看都比较方便: 但是,如果想做进一步的统计分析,这种格式就不方便了,需要行列转换,变成如下格式的明细 ...

  3. [转载]SQL Server行列转换实现

    一.Pivot和UnPivot介绍 1.Pivot介绍 PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVO ...

  4. SQL Server 行列转换(2)

    参考前一个例子http://www.cnblogs.com/insus/articles/1969896.html,现想使用另外一种方式来处理行列转换,实现下面效果: 参考代码: View Code ...

  5. Oracle 行列转换总结

    行列转换包括以下六种情况: *列转行 *行转列 *多列转换成字符串 *多行转换成字符串 *字符串转换成多列 *字符串转换成多行 下面分别进行举例介绍. 首先声明一点,有些例子需要如下10g及以后才有的 ...

  6. SAP行列转换的一个方法

    经常会遇到行列转换的需求.于是就找到了这样的一段代码.虽然也有其他的转换方法.但是都没有及时的记录.于是 就想起了将这段经典代码写在这里. TABLES spfli. data:     it_dat ...

  7. SQL语句行列转换两种方法 case ...when 和pivot函数应用

    2019独角兽企业重金招聘Python工程师标准>>> SQL语句行列转换两种方法 case ...when 和pivot函数应用SQL语句行列转换两种方法 case ...when ...

  8. DataStage系列教程 (Pivot_Enterprise 行列转换)

    有人提到Pivot_Enterprise这个组件,之前没有用过,今天捣腾了会,写下来供以后参考,如果有什么不对的,还请多指出,谢谢! Pivot_Enterprise主要用来进行行列转换. 1 示例 ...

  9. 用python做数据分析(行列转换)

    python行列转换 用reshape是有问题的,因为这是根据一个顺序的数进行遍历的 但是,用下面这个函数就有了对应的操作 C:\Users\Administrator>python Pytho ...

  10. SQL Server 2005之PIVOT/UNPIVOT行列转换

    SQL Server 2005之PIVOT/UNPIVOT行列转换 作者: NinGoo(http://ningoo.itpub.net) 发表于: 2007.04.18 11:49 分类: SQL ...

最新文章

  1. Ubuntu上Vim安装NERDTree插件操作步骤
  2. linux下activemq安装与配置
  3. android 启动速度优化终极方案
  4. linux 进程数量限制,LINUX下每进程限制线程数量
  5. 003_commons-logging与slf4j和log4j与logback
  6. html弧形列表效果,web前端入门到实战:html5网页特效-弧形菜单
  7. Asp.net 面向接口可扩展框架之类型转化基础服务
  8. 【从入门到放弃-Java】并发编程-NIO-Buffer
  9. Mybatis与iBatis的主要区别对比
  10. 高性能分页REST API查询生成器
  11. H5实现俄罗斯方块(一)
  12. 蓝桥杯笔记:DFS(深度优先搜索)解决问题
  13. linux 运行 ccs,ccs_linux
  14. [不限速百度云]两款百度网盘破解版分享
  15. 华为外包公司一面二面三面回顾
  16. 谈谈对腾讯360之争的观感
  17. 最新2021计算机排名中国大学排名,2020-2021年计算机类专业排名_中国大学本科教育按专业类排行榜_中国科教评价网...
  18. Java实现合成图片
  19. 慕课moocpython答案_中国大学慕课moocPython编程基础作业答案
  20. Big Sur 系统无法修改系统文件

热门文章

  1. 如何做好DevOps Secrets管理
  2. K8s中Secrets
  3. 微信小程序第七章 图片替换
  4. 台式计算机usb口不能用,电脑usb接口不能用怎么办【图文教程】
  5. 【帧率倍频】基于FPGA的视频帧率倍频系统verilog开发实现
  6. From Mother Teresa
  7. 一步一步实现一个简单的OS(先小装一下)
  8. vue按住shift键多选(以element框架的table为例)
  9. 四季电台应用项目源码
  10. 读《大数据时代:生活,工作与思维的大变革》