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 ip正则式
May 07 Python
pydev使用wxpython找不到路径的解决方法
Feb 10 Python
python正则表达式中的括号匹配问题
Dec 14 Python
Python文档生成工具pydoc使用介绍
Jun 02 Python
Python键盘输入转换为列表的实例
Jun 23 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
使用Python快乐学数学Github万星神器Manim简介
Aug 07 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
解决jupyter运行pyqt代码内核重启的问题
Apr 16 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
MxNet预训练模型到Pytorch模型的转换方式
May 25 Python
python中K-means算法基础知识点
Jan 25 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中socket的用法详解
2014/10/24 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
Laravel下生成验证码的类
2017/11/15 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
javascript 面向对象编程基础:封装
2009/08/21 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
Javascript的比较汇总
2016/07/25 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
Python中的各种装饰器详解
2015/04/11 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
详解python3中socket套接字的编码问题解决
2017/07/01 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
python删除文本中行数标签的方法
2018/05/31 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
《鞋匠的儿子》教学反思
2014/03/02 职场文书
委托书英文
2015/01/28 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server
Nginx安装配置详解
2022/06/25 Servers