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中处理字符串的相关的len()方法的使用简介
May 19 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
python线程池threadpool实现篇
Apr 27 Python
mac 安装python网络请求包requests方法
Jun 13 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
pandas的排序和排名的具体使用
Jul 31 Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 Python
简单了解django文件下载方式
Feb 10 Python
Python发送邮件封装实现过程详解
May 09 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
Python局部变量与全局变量区别原理解析
Jul 14 Python
分享一个python的aes加密代码
Dec 22 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
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
2017/08/18 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
简单的js计算器实现
2016/10/26 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
售后主管岗位职责
2013/12/08 职场文书
毕业寄语大全
2014/04/09 职场文书
物流管理专业自荐信
2014/06/23 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
初中团支书竞选稿
2015/11/21 职场文书
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android