sql 行转列_想要表格行转列?简单几行Python代码搞定
乍一看,好像没毛病啊!!
然鹅鹅鹅,当需求“就简单计算一下每个人的总分吧!”来临的时候。我脑海中不禁浮想起了:
安排
# 123遇事不要慌,先导个包吧import pandas as pdimport 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]}# 生成dfdf = 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'})# 增加一个新列:Totaldf_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)
行转列,就这样讲完了,大家赶快动手实践一下吧。什么?你说要列转行?!那等我们下次再来分解吧
作者:严小样儿
来源:统计与数据分析实战
sql 行转列_想要表格行转列?简单几行Python代码搞定相关推荐
- 60行Python代码搞定,王者荣耀雷达图!
点击上方"菜鸟学Python",选择"星标"公众号 超级无敌干货第一时间推给你!!! 现有以下表格,我需要画成第二张图中的雷达图(类似fifa足球.王者荣耀里面 ...
- 零基础如何用 15 行 Python 代码搞定网易云热门歌单?
健身.吃饭.敲代码:等车.撸猫.下午茶--若能佐以合适的音乐当"配餐",总是惬意非常.本文就将带你爬一爬网易云的那些热门歌单! 作者 | 上海小胖 责编 | 仲培艺 心情好或心情坏 ...
- 再见PDF提取收费!我用100行Python代码搞定!
点上方"菜鸟学Python",选择"星标" 第471篇原创干货,第一时间送达 大家在日常的工作和学习过程中,都少不了与PDF文件打交道,很多的小伙伴都面临着将P ...
- 怎样在python代码中输入π_鼠标自动点击、键盘自动输入?几行Python代码搞定
相信我,你以后一定会用到.实在不行,你先收藏,做个收藏家,等拿出来,就值钱了. 第一步:安装并导入相关模块 只需要安装PyUserInput,如下: pip install PyUserInput 如 ...
- python实现软件自动点击_鼠标自动点击、键盘自动输入?几行Python代码搞定
第一步:安装并导入相关模块 只需要安装PyUserInput,如下:pip install PyUserInput 如果你是Win10系统,肯定会报错,具体怎么解决,我放在文章结尾讲,先把主要思路讲完 ...
- python拷贝excel工作簿_几百个Excel表格需要复制粘贴,如何用Python一键搞定?
在工作中经过会遇到大量格式一致,内容不同的Excel表格文件,需要将这里面的内容整理到一个Excel文件中的情形.一般情况下,都是将这些Excel表格文件一个一个地打开,将里面的内容复制,然后粘贴到一 ...
- python代码写父亲节快乐图片_听说最近有个很火的姓氏壁纸?10行Python代码搞定它!...
昨天Paradoxical网上冲浪的时候,看到了一篇文章说最近有个很火的姓氏壁纸,就像下面的图这样. 看起来不错鸭,但我不会做--嘿嘿,可以去拜托小哥哥嘛~ 我:小哥哥,给你看个壁纸. 惨绿青年:傻傻 ...
- python代码手机壁纸_听说最近有个很火的姓氏壁纸?10行Python代码搞定它!
昨天Paradoxical网上冲浪的时候,看到了一篇文章说最近有个很火的姓氏壁纸,就像下面的图这样. 看起来不错鸭,但我不会做--嘿嘿,可以去拜托小哥哥嘛~ 我:小哥哥,给你看个壁纸. 惨绿青年:傻傻 ...
- python 一行_一行 Python 代码搞定炫酷可视化
cf.set_config_file(offline=True) 然后我们需要按照上面的使用格式来操作,首先我们需要有个DataFrame,如果手头没啥数据,那可以先生成个随机数.cufflinks有 ...
最新文章
- 浅谈 sessionStorage、localStorage、cookie 的区别以及使用
- 卧槽!阿里《算法进阶指南》火了,完整版 开放下载!
- 树莓派安装Ubuntu 18 64系统
- java冻结行列,poi冻结行和列 - osc_0k23td2u的个人空间 - OSCHINA - 中文开源技术交流社区...
- UVA - 489 ​​​​​​​Hangman Judge
- linux cd 命令案例,15个关于Linux的‘cd’命令的练习例子
- Jenkins之Log Parse的使用
- [HNOI2007] 分裂游戏
- zookeeper 单机配置
- ajax,training my javascript!手写AJAX,用POST方法传值
- jenkins手把手教你从入门到放弃02-jenkins在Windows系统安装与配置
- 2017年12月HCNP考试易错题汇总
- 用java写图形验证码,超级简单
- HOJ排队打水F601题解
- PostgreSQL教程
- Opengl 之 窗口初体验 ------ By YDD的铁皮锅
- Rust学习:13.1_返回值和错误处理之panic 深入剖析
- 【金融项目】尚融宝项目(七)
- 【区块链108将】千方基金点付大头:投资区块链,不要让过往认知限制你的想象...
- Jquery不同版本的兼容性