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 相关文章推荐
Django集成百度富文本编辑器uEditor攻略
Jul 04 Python
python实现12306火车票查询器
Apr 20 Python
python密码错误三次锁定(实例讲解)
Nov 14 Python
Python爬虫使用脚本登录Github并查看信息
Jul 16 Python
TensorFlow实现模型评估
Sep 07 Python
Python实现分段线性插值
Dec 17 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
浅谈Django前端后端值传递问题
Jul 15 Python
python如何设置静态变量
Sep 07 Python
Python读取pdf表格写入excel的方法
Jan 22 Python
python中time.ctime()实例用法
Feb 03 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系统流量分析的程序
2006/10/09 PHP
基于mysql的论坛(4)
2006/10/09 PHP
php中变量及部分适用方法
2008/03/27 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
JavaScript错误处理
2015/02/03 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
vue实现页面加载动画效果
2017/09/19 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
利用Python如何将数据写到CSV文件中
2018/06/05 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
python中time库的实例使用方法
2019/10/31 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
园林设计师自荐信
2013/11/18 职场文书
关于毕业的中学校园广播稿
2014/01/26 职场文书
python如何进行基准测试
2021/04/26 Python
分享一些Java的常用工具
2021/06/11 Java/Android
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python