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基于Socket实现的简单聊天程序示例
Aug 05 Python
Python实现带参数与不带参数的多重继承示例
Jan 30 Python
Python安装模块的常见问题及解决方法
Feb 05 Python
理论讲解python多进程并发编程
Feb 09 Python
python2.7 安装pip的方法步骤(管用)
May 05 Python
python中栈的原理及实现方法示例
Nov 27 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
Python基于正则表达式实现计算器功能
Jul 13 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
Jan 05 Python
python 提取html文本的方法
May 20 Python
python使用pymysql模块操作MySQL
Jun 16 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
桌面中心(四)数据显示
2006/10/09 PHP
PHP小技巧之函数重载
2014/06/02 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
JavaScript内核之基本概念
2011/10/21 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
URL中“#” “?” &“”号的作用浅析
2017/02/04 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
javascript实现下雨效果
2017/03/27 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
python中sleep函数用法实例分析
2015/04/29 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
python2 与python3的print区别小结
2018/01/16 Python
Python元组常见操作示例
2019/02/19 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
深入浅析Python代码规范性检测
2020/07/31 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
美国网上书店:Barnes & Noble
2018/08/15 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
工业学校毕业生自荐书
2014/01/03 职场文书
网络事业创业计划书范文
2014/01/09 职场文书
大学生校园创业计划书
2014/02/08 职场文书
《我的信念》教学反思
2014/02/15 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
2015年环保局工作总结
2015/05/22 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
入党介绍人意见范文
2015/06/01 职场文书
优质护理服务心得体会
2016/01/22 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android