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

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

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

安排

# 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代码搞定相关推荐

  1. 60行Python代码搞定,王者荣耀雷达图!

    点击上方"菜鸟学Python",选择"星标"公众号 超级无敌干货第一时间推给你!!! 现有以下表格,我需要画成第二张图中的雷达图(类似fifa足球.王者荣耀里面 ...

  2. 零基础如何用 15 行 Python 代码搞定网易云热门歌单?

    健身.吃饭.敲代码:等车.撸猫.下午茶--若能佐以合适的音乐当"配餐",总是惬意非常.本文就将带你爬一爬网易云的那些热门歌单! 作者 | 上海小胖 责编 | 仲培艺 心情好或心情坏 ...

  3. 再见PDF提取收费!我用100行Python代码搞定!

    点上方"菜鸟学Python",选择"星标" 第471篇原创干货,第一时间送达 大家在日常的工作和学习过程中,都少不了与PDF文件打交道,很多的小伙伴都面临着将P ...

  4. 怎样在python代码中输入π_鼠标自动点击、键盘自动输入?几行Python代码搞定

    相信我,你以后一定会用到.实在不行,你先收藏,做个收藏家,等拿出来,就值钱了. 第一步:安装并导入相关模块 只需要安装PyUserInput,如下: pip install PyUserInput 如 ...

  5. python实现软件自动点击_鼠标自动点击、键盘自动输入?几行Python代码搞定

    第一步:安装并导入相关模块 只需要安装PyUserInput,如下:pip install PyUserInput 如果你是Win10系统,肯定会报错,具体怎么解决,我放在文章结尾讲,先把主要思路讲完 ...

  6. python拷贝excel工作簿_几百个Excel表格需要复制粘贴,如何用Python一键搞定?

    在工作中经过会遇到大量格式一致,内容不同的Excel表格文件,需要将这里面的内容整理到一个Excel文件中的情形.一般情况下,都是将这些Excel表格文件一个一个地打开,将里面的内容复制,然后粘贴到一 ...

  7. python代码写父亲节快乐图片_听说最近有个很火的姓氏壁纸?10行Python代码搞定它!...

    昨天Paradoxical网上冲浪的时候,看到了一篇文章说最近有个很火的姓氏壁纸,就像下面的图这样. 看起来不错鸭,但我不会做--嘿嘿,可以去拜托小哥哥嘛~ 我:小哥哥,给你看个壁纸. 惨绿青年:傻傻 ...

  8. python代码手机壁纸_听说最近有个很火的姓氏壁纸?10行Python代码搞定它!

    昨天Paradoxical网上冲浪的时候,看到了一篇文章说最近有个很火的姓氏壁纸,就像下面的图这样. 看起来不错鸭,但我不会做--嘿嘿,可以去拜托小哥哥嘛~ 我:小哥哥,给你看个壁纸. 惨绿青年:傻傻 ...

  9. python 一行_一行 Python 代码搞定炫酷可视化

    cf.set_config_file(offline=True) 然后我们需要按照上面的使用格式来操作,首先我们需要有个DataFrame,如果手头没啥数据,那可以先生成个随机数.cufflinks有 ...

最新文章

  1. 浅谈 sessionStorage、localStorage、cookie 的区别以及使用
  2. 卧槽!阿里《算法进阶指南》火了,完整版 开放下载!
  3. 树莓派安装Ubuntu 18 64系统
  4. java冻结行列,poi冻结行和列 - osc_0k23td2u的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. UVA - 489 ​​​​​​​Hangman Judge
  6. linux cd 命令案例,15个关于Linux的‘cd’命令的练习例子
  7. Jenkins之Log Parse的使用
  8. [HNOI2007] 分裂游戏
  9. zookeeper 单机配置
  10. ajax,training my javascript!手写AJAX,用POST方法传值
  11. jenkins手把手教你从入门到放弃02-jenkins在Windows系统安装与配置
  12. 2017年12月HCNP考试易错题汇总
  13. 用java写图形验证码,超级简单
  14. HOJ排队打水F601题解
  15. PostgreSQL教程
  16. Opengl 之 窗口初体验 ------ By YDD的铁皮锅
  17. Rust学习:13.1_返回值和错误处理之panic 深入剖析
  18. 【金融项目】尚融宝项目(七)
  19. 【区块链108将】千方基金点付大头:投资区块链,不要让过往认知限制你的想象...
  20. Jquery不同版本的兼容性

热门文章

  1. libsvm学习(二)——第一次体验libsvm(转)
  2. cacls 使用方法
  3. 产品经理学PMP,有必要吗?
  4. PMCAFF微课堂已结束 | 前YY产品总监深度揭秘P2P运营推广精髓
  5. 对 UI 设计师来说,iPhone X 意味着什么?
  6. 【体验干货】产品经理必知:产品体验报告如何写的全而精
  7. mysql之数据库主从复制配置报错1677
  8. SQL注入原理及产生过程
  9. jmx rmi 穿越防火墙问题及jmxmp的替代方案
  10. 实现auto_ptr的两种方法