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 相关文章推荐
在Windows8上的搭建Python和Django环境
Jul 03 Python
Python中datetime常用时间处理方法
Jun 15 Python
Django原生sql也能使用Paginator分页的示例代码
Nov 15 Python
python导入模块交叉引用的方法
Jan 19 Python
Python中时间datetime的处理与转换用法总结
Feb 18 Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 Python
Python使用configparser库读取配置文件
Feb 22 Python
django使用F方法更新一个对象多个对象字段的实现
Mar 28 Python
python3中sys.argv的实例用法
Apr 24 Python
浅谈keras.callbacks设置模型保存策略
Jun 18 Python
Python爬虫开发与项目实战
Dec 16 Python
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 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
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
php实现telnet功能示例
2014/04/08 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
js验证表单大全
2006/11/25 Javascript
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
jQuery学习笔记 操作jQuery对象 属性处理
2012/09/19 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
Python中subprocess的简单使用示例
2015/07/28 Python
Python实现各种排序算法的代码示例总结
2015/12/11 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
python3安装crypto出错及解决方法
2019/07/30 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
"引用"与多态的关系
2013/02/01 面试题
植树节标语
2014/06/27 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
医学专业大学生求职信
2014/07/12 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
使用javascript解析二维码的三种方式
2021/11/11 Javascript