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 相关文章推荐
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
Python闭包实现计数器的方法
May 05 Python
Python使用chardet判断字符编码
May 09 Python
python3.5使用tkinter制作记事本
Jun 20 Python
python抓取并保存html页面时乱码问题的解决方法
Jul 01 Python
分享几道你可能遇到的python面试题
Jul 24 Python
Python字符串的全排列算法实例详解
Jan 07 Python
python3的print()函数的用法图文讲解
Jul 16 Python
Django实现文件上传和下载功能
Oct 06 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Jan 27 Python
Python中with上下文管理协议的作用及用法
Mar 18 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利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
JavaScript类库D
2010/10/24 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
jQuery数据缓存用法分析
2015/02/20 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
python根据京东商品url获取产品价格
2015/08/09 Python
Python机器学习之K-Means聚类实现详解
2018/02/22 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
python lxml中etree的简单应用
2019/05/10 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
django框架auth模块用法实例详解
2019/12/10 Python
Python生成器常见问题及解决方案
2020/03/21 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
eBay美国官网:eBay.com
2020/10/24 全球购物
公司合作意向书
2014/04/01 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
2015年招生工作总结
2015/05/04 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
运动会新闻稿
2015/07/17 职场文书
商场广播稿范文
2015/08/19 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书