Python实现行转列?!超简单,赶快get起来
前言
数据的行转列操作,在实际工作过程中应用非常广泛。
由于不同人员、不同部门对数据结构的认识是不大相同的,尤其是从基层人员手里拿到的数据,更是五花八门,横七竖八。
比如有这样一张成绩表:
乍一看,好像没毛病啊!!
然鹅鹅鹅,当需求:=简单计算一下每个人的总分吧!来临的时候。我脑海中不禁浮想起了:
安排
# 遇事不要慌,先导个包吧
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起来相关推荐
- python 做行转列通过enbid对应多个cell一行显示
今日领导要求把基站和小区对应起来并在一行显示.使用excel发现透视中无值选项. 通过python 中panda库中的pivot函数解决. pivot(index=None, columns=None ...
- Excel·VBA多行多列数据简单汇总
目录 1,多行多列数据简单汇总 举例 2,数据汇总函数化.通用化 match函数 举例1 举例2 3,字典嵌套字典汇总数据 举例 不同于之前写过的 <Excel·VBA统计表生成函数及应用实例& ...
- 【机器学习基础】Python实现行转列?!超简单,赶快get起来
◆ ◆ ◆ ◆ ◆ 前言 数据的行转列操作,在实际工作过程中应用非常广泛. 由于不同人员.不同部门对数据结构的认识是不大相同的,尤其是从基层人员手里拿到的数据,更是五花八门,横七竖八. 比如有这样一 ...
- sql 行转列_想要表格行转列?简单几行Python代码搞定
前言数据的行转列操作,在实际工作过程中应用非常广泛.由于不同人员.不同部门对数据结构的认识是不大相同的,尤其是从基层人员手里拿到的数据,更是五花八门,横七竖八.比如有这样一张成绩表: 乍一看,好像没毛 ...
- 面试Python开发的这道题超简单,我却搞砸了!
题图 | Shutterstock / studiostoks 这道算法题明明超简单-- 上午10点,在T公司的会议室里,小R正在参加一场他准备了好几天的技术面试. 整体来说,他在这场面试中的表现还不 ...
- python打造excel神器_超简单:用Python让Excel飞起来
前言 如何获取学习资源 章Python快速上手 1.1为什么要学习用Python控制Excel 1.2Python编程环境的搭建 1.2.1安装Python官方的编程环境IDLE 1.2.2安装与配置 ...
- python怎么编写在线excel_超简单:用Python让Excel飞起来(零基础学python,用python实现办公自动化)...
王秀文,有超过6年的后端开发.运维开发经验,擅长Python.Node.js.Java.Go等主流编程语言.曾参与翻译Elasticsearch官方技术文档.有IoT系统开发经验和CRM系统设计开发经 ...
- 用python实现视频换脸_超简单使用Python换脸实例
换脸! 这段时间,deepfakes搞得火热,比方说把<射雕英雄传>里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说<速度与激情7& ...
- python openpyxl 读取Excel,超简单案例python openpyxl 获取表格数据
1. import openpyxl 导入openpyxl模块 import openpyxl #导入模块openpyxl 2. 获取的文件(×××.xlsx) 使用openpyxl下的方法获取Exc ...
最新文章
- Thinkphp5创建控制器
- 组策略 之 驱动器映射
- 系统接口规范以及常见的接口技术概述和比较
- 2017.10.29 染色方案 思考记录
- 技术人生:不要忘记过去,也不要想着过去,向前看
- 小程序开发:python sanic 实现小程序登录注册
- sql server 2000 生成数据库的SQL脚本
- git submodule详解
- 330UF16V 10*7.7片式铝电解电容封装
- java中的oop是什么意思_什么是面向对象编程(OOP)?
- ipq8064 openwrt 上KGDB工作不正常
- 项目管理的五个过程和九大知识领域
- Java 同环比计算相关逻辑
- 基于Java EE的网上书店系统
- 医学统计学笔记之设计
- CSS3重复渐变(线性和径向渐变)
- 软考网工-第四章知识产权与标准化
- 安防监控、智慧交通 视频结构化(车辆+行人)实现方案
- 尚学堂怎么样?给你讲讲我的亲身经历
- Mysql出现 “ERROR 1062” 的解决方法
热门文章
- 进程、线程和协程之间的区别和联系
- PHP微信支付没有收到微信的回调怎么修改订单状态:主动查询
- Linux的Nginx一:概况
- oracle10g自带的公共同义词,10g ALL_SYNONYMS同义词查询性能下降
- centos7 防火墙_Linux系统安全Centos 7的Firewalld防火墙基础
- python系统关键字_python基础之常用关键字总结
- php自定义表单怎么导入excel,织梦dedeCMS将自定义表单数据导入到excel文档实现方法...
- 关于微信授权与登录的相关操作(纯手敲)
- Web文件上传方法总结大全
- mysql5.6.22.0安装_皮带机滚筒用圆锥孔调心滚子轴承锁紧安装工艺