前言

数据的行转列操作,在实际工作过程中应用非常广泛。

由于不同人员、不同部门对数据结构的认识是不大相同的,尤其是从基层人员手里拿到的数据,更是五花八门,横七竖八。

比如有这样一张成绩表:

乍一看,好像没毛病啊!!

然鹅鹅鹅,当需求:=简单计算一下每个人的总分吧!来临的时候。我脑海中不禁浮想起了:

安排

# 遇事不要慌,先导个包吧
import pandas as pd
import numpy as np# 造假数据
data = {'name':['严小样儿','严小样儿','严小样儿','才华横竖都溢','才华横竖都溢','才华横竖都溢','幽兰幽香','幽兰幽香','幽兰幽香'],'subject':['Python','C','SQL','Python','C','SQL','Python','C','SQL'],'score':[95,60,95,96,95,80,99,94,88]}# 生成df
df = pd.DataFrame(data)
df

使用pivot方法即可完成行转列哦~语法如下:

#df.pivot(index=None, columns=None, values=None)
df.pivot(index='name',columns='subject',values='score')

不要高兴的太早,遇到重复值就麻烦了!少侠请看:

# 造含有重复值的假数据
data1 = {'name':['严小样儿','严小样儿','严小样儿','严小样儿','才华横竖都溢','才华横竖都溢','才华横竖都溢','幽兰幽香','幽兰幽香','幽兰幽香'],'subject':['Python','Python','C','SQL','Python','C','SQL','Python','C','SQL'],'score':[95,95,60,95,96,95,80,99,94,88]}df1 = pd.DataFrame(data1)
df1

df1.pivot(index='name',columns='subject',values='score')# 一旦有重复值,就会报错。
ValueError: Index contains duplicate entries, cannot reshape

别急别急,去个重不就可以了吗?!

df1.drop_duplicates().pivot(index='name',columns='subject',values='score')

方法二:数据透视表

# pivot_table(data, values=None, index=None, columns=None, aggfunc='mean')
pd.pivot_table(df1,index='name',columns='subject',values='score',aggfunc={'score':'max'})

聚合

刚刚说了,要求每个人的总分,其实使用透视表就可以完成。

不过,稍微动动脑筋哦。遇到重复值数据的话,只能使用下面的方法一,去重后的数据集,方法一,二都支持。

计算每个人的总分,语法如下:

# 重复数据集也可以
df_pivot = pd.pivot_table(df1,index='name',columns='subject',values='score',aggfunc={'score':'max'})
# 增加一个新列:Total
df_pivot['Total'] = df_pivot.apply(lambda x:np.sum(x),axis = 1)
df_pivot

方法二,必须是去重后的数据集,否则会出现计算错误。

# 使用去重数据集才可以
pd.pivot_table(df,index='name',values='score',aggfunc='sum')

# 使用join方法把总分列加进去。
total = pd.pivot_table(df,index='name',values='score',aggfunc='sum')
pd.pivot_table(df,index='name',columns='subject',values='score').join(total)

--需求方:算是算出来了,可是,这个score看着怪怪的,能不能改成“总分”呢?

--严小样儿:我改(卑微)!安排~

total1 = pd.pivot_table(df,index='name',values='score',aggfunc='sum').rename({'score':'总分'},axis=1)
pd.pivot_table(df,index='name',columns='subject',values='score').join(total1)

行转列,就这样讲完了,大家赶快动手实践一下吧。那么,如何列转行呢?!

!

各位伙伴们好,詹帅本帅假期搭建了一个个人博客和小程序,汇集各种干货和资源,也方便大家阅读,感兴趣的小伙伴请移步小程序体验一下哦!(欢迎提建议)

推荐阅读

牛逼!Python常用数据类型的基本操作(长文系列第①篇)

牛逼!Python的判断、循环和各种表达式(长文系列第②篇)

牛逼!Python函数和文件操作(长文系列第③篇)

牛逼!Python错误、异常和模块(长文系列第④篇)

Python实现行转列?!超简单,赶快get起来相关推荐

  1. python 做行转列通过enbid对应多个cell一行显示

    今日领导要求把基站和小区对应起来并在一行显示.使用excel发现透视中无值选项. 通过python 中panda库中的pivot函数解决. pivot(index=None, columns=None ...

  2. Excel·VBA多行多列数据简单汇总

    目录 1,多行多列数据简单汇总 举例 2,数据汇总函数化.通用化 match函数 举例1 举例2 3,字典嵌套字典汇总数据 举例 不同于之前写过的 <Excel·VBA统计表生成函数及应用实例& ...

  3. 【机器学习基础】Python实现行转列?!超简单,赶快get起来

    ◆ ◆ ◆  ◆ ◆ 前言 数据的行转列操作,在实际工作过程中应用非常广泛. 由于不同人员.不同部门对数据结构的认识是不大相同的,尤其是从基层人员手里拿到的数据,更是五花八门,横七竖八. 比如有这样一 ...

  4. sql 行转列_想要表格行转列?简单几行Python代码搞定

    前言数据的行转列操作,在实际工作过程中应用非常广泛.由于不同人员.不同部门对数据结构的认识是不大相同的,尤其是从基层人员手里拿到的数据,更是五花八门,横七竖八.比如有这样一张成绩表: 乍一看,好像没毛 ...

  5. 面试Python开发的这道题超简单,我却搞砸了!

    题图 | Shutterstock / studiostoks 这道算法题明明超简单-- 上午10点,在T公司的会议室里,小R正在参加一场他准备了好几天的技术面试. 整体来说,他在这场面试中的表现还不 ...

  6. python打造excel神器_超简单:用Python让Excel飞起来

    前言 如何获取学习资源 章Python快速上手 1.1为什么要学习用Python控制Excel 1.2Python编程环境的搭建 1.2.1安装Python官方的编程环境IDLE 1.2.2安装与配置 ...

  7. python怎么编写在线excel_超简单:用Python让Excel飞起来(零基础学python,用python实现办公自动化)...

    王秀文,有超过6年的后端开发.运维开发经验,擅长Python.Node.js.Java.Go等主流编程语言.曾参与翻译Elasticsearch官方技术文档.有IoT系统开发经验和CRM系统设计开发经 ...

  8. 用python实现视频换脸_超简单使用Python换脸实例

    换脸! 这段时间,deepfakes搞得火热,比方说把<射雕英雄传>里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说<速度与激情7& ...

  9. python openpyxl 读取Excel,超简单案例python openpyxl 获取表格数据

    1. import openpyxl 导入openpyxl模块 import openpyxl #导入模块openpyxl 2. 获取的文件(×××.xlsx) 使用openpyxl下的方法获取Exc ...

最新文章

  1. Thinkphp5创建控制器
  2. 组策略 之 驱动器映射
  3. 系统接口规范以及常见的接口技术概述和比较
  4. 2017.10.29 染色方案 思考记录
  5. 技术人生:不要忘记过去,也不要想着过去,向前看
  6. 小程序开发:python sanic 实现小程序登录注册
  7. sql server 2000 生成数据库的SQL脚本
  8. git submodule详解
  9. 330UF16V 10*7.7片式铝电解电容封装
  10. java中的oop是什么意思_什么是面向对象编程(OOP)?
  11. ipq8064 openwrt 上KGDB工作不正常
  12. 项目管理的五个过程和九大知识领域
  13. Java 同环比计算相关逻辑
  14. 基于Java EE的网上书店系统
  15. 医学统计学笔记之设计
  16. CSS3重复渐变(线性和径向渐变)
  17. 软考网工-第四章知识产权与标准化
  18. 安防监控、智慧交通 视频结构化(车辆+行人)实现方案
  19. 尚学堂怎么样?给你讲讲我的亲身经历
  20. Mysql出现 “ERROR 1062” 的解决方法

热门文章

  1. 进程、线程和协程之间的区别和联系
  2. PHP微信支付没有收到微信的回调怎么修改订单状态:主动查询
  3. Linux的Nginx一:概况
  4. oracle10g自带的公共同义词,10g ALL_SYNONYMS同义词查询性能下降
  5. centos7 防火墙_Linux系统安全Centos 7的Firewalld防火墙基础
  6. python系统关键字_python基础之常用关键字总结
  7. php自定义表单怎么导入excel,织梦dedeCMS将自定义表单数据导入到excel文档实现方法...
  8. 关于微信授权与登录的相关操作(纯手敲)
  9. Web文件上传方法总结大全
  10. mysql5.6.22.0安装_皮带机滚筒用圆锥孔调心滚子轴承锁紧安装工艺