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 05 Python
Python函数可变参数定义及其参数传递方式实例详解
May 25 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
Feb 08 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
python进程和线程用法知识点总结
May 28 Python
对python tkinter窗口弹出置顶的方法详解
Jun 14 Python
python动态进度条的实现代码
Jul 03 Python
Django  ORM 练习题及答案
Jul 19 Python
python 字符串追加实例
Jul 20 Python
python烟花效果的代码实例
Feb 25 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
一起来学习Python的元组和列表
Mar 13 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
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
php接口技术实例详解
2016/12/07 PHP
HTML颜色选择器实现代码
2010/11/23 Javascript
jQuery参数列表集合
2011/04/06 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
js判断选择的时间是否大于今天的代码
2013/08/20 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
js转换对象为xml
2017/02/17 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
原生js轮播特效
2017/05/18 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
Python3连接SQLServer、Oracle、MySql的方法
2018/06/28 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
HTML的form表单和django的form表单
2019/07/25 Python
python获取Pandas列名的几种方法
2019/08/07 Python
python实现批量命名照片
2020/06/18 Python
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
金智子午JAVA面试题
2015/09/04 面试题
extern在函数声明中是什么意思
2014/01/19 面试题
工程业务员工作职责
2013/12/07 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
银行实习推荐信
2015/03/27 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python