pandas使用之宽表变窄表的实现


Posted in Python onApril 12, 2020

我就废话不多说了,还是直接看代码吧!

import pandas as pd
# 伪造一些数据
fake_data = {'subject':['math', 'english'],
      'A': [88, 90],
      'B': [70, 80],
      'C': [60, 78]}

# 宽表
test = pd.DataFrame(fake_data, columns=['subject', 'A', 'B', 'C'])
test
	subject	A	B	C
0	math	88	70	60
1	english	90	80	78

# 转换为窄表
pd.melt(test, id_vars=['subject'])

subject	variable	value
0	math	A	88
1	english	A	90
2	math	B	70
3	english	B	80
4	math	C	60
5	english	C	78

补充知识:pandas从单条目数据集生成宽表

需求

场景

从医院数据库中导出了大量的体检数据,但体检数据表中,每一行代表某人某次体检的某一项体检的结果。目的想将每一个人的每一次体检结果作为一行存储,每一列为体检项。

示例

StuID Type Num
0 111021 Math 89
1 111021 English 93
2 312983 English 91
3 314621 English 82
4 314621 Math 92
5 112341 Math 82

目的:转换成如下表格

StuID English Math
0 111021 93 89
1 312983 91 NaN
2 314621 82 92
3 112341 NaN 82

方案一

pandas使用之宽表变窄表的实现

具体代码如下

#将'B'列的类别调整为行。
#1
num = df[~df.duplicated(subset=['StuID'])].loc[:,'StuID'].to_list()
#2
result_df = pd.DataFrame({'StuID': np.array(num)},columns=['StuID','English','Math'])
#3
for i in df.index:
  t = df.loc[i,'Type']
  num = df.loc[i,'StuID']
  result_df.loc[result_df['StuID'] == num,[t]] = df.loc[i,'Num']
print(result_df)

结果

pandas使用之宽表变窄表的实现

以上这篇pandas使用之宽表变窄表的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中列表的一些基本操作知识汇总
May 20 Python
Python 3.x 新特性及10大变化
Jun 12 Python
pygame实现俄罗斯方块游戏
Jun 26 Python
pytorch训练imagenet分类的方法
Jul 27 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
Mar 13 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
python实现用户名密码校验
Mar 18 Python
Python使用monkey.patch_all()解决协程阻塞问题
Apr 15 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
python用tkinter实现一个gui的翻译工具
Oct 26 Python
Python requests HTTP验证登录实现流程
Nov 05 Python
python print 格式化输出,动态指定长度的实现
Apr 12 #Python
设置jupyter中DataFrame的显示限制方式
Apr 12 #Python
Python批量将图片灰度化的实现代码
Apr 11 #Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 #Python
Python实现AI换脸功能
Apr 10 #Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 #Python
Jupyter notebook运行Spark+Scala教程
Apr 10 #Python
You might like
PHP 存储文本换行实现方法
2010/01/05 PHP
for循环连续求和、九九乘法表代码
2012/02/20 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
ThinkPHP中create()方法自动验证表单信息
2017/04/28 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
原生JS实现列表内容自动向上滚动效果
2019/05/22 Javascript
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
深入理解python try异常处理机制
2016/06/01 Python
python利用正则表达式搜索单词示例代码
2017/09/24 Python
python3.x实现发送邮件功能
2018/05/22 Python
详解python数据结构和算法
2019/04/18 Python
Python中的引用知识点总结
2019/05/20 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
煤矿机修工岗位职责
2014/02/07 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
创建文明城市标语
2014/06/16 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
56句经典英文座右铭
2019/08/09 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
从原生JavaScript到React深入理解
2022/07/23 Javascript