dataframe 如何选中某列的一行_带你领略pandas中多表之间如何处理

51f93dd4285e3b38544026e14bc2735e.png

但我们在处理Pandas多表数据时,我们需要将多个表之间进行表格的连接与合并,当连接完多表之后我们可能还需要对数据进行多重的索引,方便我们更快的找到数据,以及对数据进行做透视表,更加直观的去观察我们的数据,今天我们就围绕着数据合并以及数据重塑及透视表进行展开讲解,让我们去了解在Pandas中如何去这么操作数据。

一、数据合并

1、连接表,

在我们获得数据的时候可能数据并不完整,而我们需要将这些不完整的数据合并到一起组成一个完整的数据,下面我们对数据进行合并的操作。

  • 创建3个DataFrame表格
af0d42aafc7484680fa41bcd51da37a6.png

查看一下三个表的数据

d4949db8ad1e19fc697c9eddabb8ee58.png
acdd33e740493b12f0df636ddb5b049b.png
d9eaecc4e45d2fbf7292df88539bb965.png
  1. 将表格通过concat()方法进行合并

Concat参数如下

Objs(必须参数)

参与连接的pandas对象的列表或字典

Axis

指名连接的轴向,默认为0

Join

选中inner或outer(默认),其他轴向上索引是按交集(inner)还是并集(outer)进行合并

Join_axes

指名用于其他N-1条轴的索引,不执行并集/交集运算

Keys

与连接对象有关的值,用于形成连接轴向上的层次化索引。可以是任意值的列表、数组、元组数组和数组列表(如果需要将levels设置成多级数组的话)

Levels

指定用作层次化索引各级别的索引,如果设置了keys的话

Names

用于创建分层级别的名称,如果设置了keys或levels的话

Verify_integrity

检查结果对象新轴上的重复情况,如果发则引发异常。默认为(false)允许重复

Ignore_index

不保留连接轴上的索引,产生一组新索引range

9bfab199716248520ec47bc030020e0a.png
  • 通过keys参数设置连接df1、df2、df3的值为x、y、z
ab2921a189f683d93bb8f854211e8632.png
  • 新增加一个df4表,横向连接到df1表的第2、3、6、7列
dfbc1b254f59a39bcdcc6a9936eae4a6.png
  • 将df1和df4横向进行交集合并
e98f48d84933723e7419fe3c60dfa2fb.png

可以看出,合并后的数据为df1和df4都有的索引行进行合并的

  • 按照df1的索引进行df1表和df4表的横向索引
3b57412afafa40109c6ac2d317e455ef.png
  • 结果可以看出合并是按照df1表的索引进行合并的。通过append()方法连接表格连接df1和df2
405653261dd5cfbbe7795c715309c927.png
  • 连接df1和df4表
8ec4aa96435e365bf5e25789e74e84a2.png

可以看出在合并的数据中原表中没有的索引和列值都填充为了NaN缺失值。

  • 连接df1、df2、df3表
2cffb17c07c15eb44a6e37df437d1ef3.png
  • 忽略连接轴上的上的索引
26108143ca0f5ee5cf9e4e836eebc26f.png
  • 新增加一个s1表,并且跟df1进行横向合并
3263710ca9e6467df98d16f95a02b440.png
  • 新增加一个s2表,并且跟df1进行多次连接
8a00467f8a031d25a65cdb1845e5ef28.png

结果可以看出,s2表中的数据并未确定列名,那么系统就自动的从0开始进行列名的名称。

  • 表格合并后不保留原有的索引列名
e56e58bce9921b42fb8797165c416baf.png

表格合并后将原有的列名全部替换为一个range()序列

1.3、附加行

3788cb3ec52ab95898c17a86ac1d837e.png
9676d5a7fe4c671d9783ec1fe2ae4c19.png
ea3e5d5d3de2f9ab0388763248b161f9.png

结尾可以看出,合并后将s2中的数据作为附加行跟在了df1表的后面

2、数据库风格的DataFrame连接/合并

2.1、单个键进行连接

  • 创建两个表格并查看
7b7f7ba70c874daaacfac09de765edf3.png
  • 将key作为两个表连接的中介
171755cfae13fff788da79f91777c444.png

2.2、多个键进行连接

  • 创建两个表格,然后将表格以Key1和key2作为中介进行连接
838b1f900d35ae5787d70abe33ec4f5b.png

可以看出左右表以共同存在的key1、key2的行作为取出元素的依据,只取出了前三行,left表中的第四行为k2、k1,right表中的第四行为k2、k0,并不匹配所以没有进行取值。

  • 以左表为主导进行连接,连接以key1,key2作为连接中介进行取值
e40a02e7acc817601921f64a292d017b.png

可以看出这次连接是以left表汇总的key1 、key2作为主键进行连接,right表中的不存在的主键元素则以NaN代替。

  • 以右表的key1、key2位主键进行连接
e39ebe37f2671c2a0571dbdb90709a54.png
  • 以两个表所有的key1、key2的元素都取出来
c4ce3792e1afe5d8e88aec2ebe7e027d.png
  • 当两个表列名相同时进行合并
1ec2c6428f7bc76cd86003dd299bbd34.png

列名相同时则会重新命名列名

2.3、合并指示符

  • 以并集进行合并
e4b57519f531ef57fb445117b262ad97.png

也可以使用字符串作为参数替代True,字符串会作为该列的列名称。

28f0b0af86a6beb15436b7510d51376a.png

2.4、通过索引进行连接

  • 通过左表索引连接右表
768bb7eafd12ceb03be2e3183ad0ae45.png
  • 左表连接右表,求并集的形式
c23f1c02fbc10c4e8188e69afebdcca3.png
7e33b7bc623227907301cffa84e7bbaf.png
  • 左表连右表,求交集的形式
434a063f21bdd1f40f3d9bf0cdc0a347.png
d51bd5ac1f49953dc8bc04560181fa17.png

2.5、通过索引和某列连接

ac62b1503caa4e15ed629d25c136e1fe.png

通过结果可以看出,right表中的数据重复了一遍。

2.6、重叠列名称的合并

30eb28dce0ef04a5294ce4351f04c889.png

2.7、数据框拼接

3853cf7549ddd6d0a3d0d22b4d8fa225.png
3326ad9a36ba360e174c37485edb5959.png

如果都存在的值以传入的数据为准

5cf6988dc0e4a7a5293f1d66a42743ef.png

二、数据重塑及透视表

1、多重索引

  • 创建表格并查看
af541351edc8f40ada4f778095329f1e.png
  • 查看animal和hair_length下的所有数据
3059053890b29059fb8dbb70c76879a7.png

或者以一级标题或二级标题进行查看

340af66097b5219569a127c051b4b078.png
  • 创建表格并查看
e82fb0cbcb1458dce5c7130f759e6ea0.png

使用level参数进行调用

  • 查看exp下面的属性值
7b9ee333177c0ec6a7a131352f20eb50.png
  • 查看anmal下面的属性值
943ffeb56834e66fb3434aa7b8208044.png
  • 调用数据
32e17685dc2c5d032ea633ceed7faffe.png
f3b9d4ba87c3eab287a4eb75f586cd44.png
  • 调用first数据
44eb0595b20109912f220400f5bd725e.png
  • 调用second数据
2ccaae2c7dcce350a852d7ecfa2926f3.png

2、透视表

  • 创建一个透视表
5e9e2d3f6bcb5fbd7b49a58d14f55e5f.png
  • 查看D列,索引为A,B,列为C的所有数据
3cf104bb551f424365950028c44954ea.png
  • 查看D列,索引为B,列为A,C的所有数据求和
a0749159ced8af00139fbc4e2858a0f1.png
  • 查看DE列,索引为B,列为A,C的求和数据
1607c98a95ecee33eb231fc0c62a3fa5.png
  • 查看索引为A,B,列为C的数据
7e2a2724b9ce8fd0fe9d75101c58ce48.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python计算定积分_python编程通过蒙特卡洛法计算定积分详解

这篇文章主要介绍了python编程通过蒙特卡洛法计算定积分详解,具有一定借鉴价值,需要的朋友可以参考下。 想当初,考研的时候要是知道有这么个好东西,计算定积分。。。开玩笑,那时候计算定积分根本没有这么简单的。但这确…

java spring mvc api_SpringMVC实现REST API

JSON使用Jackson jar包、RequestBody、ResponseBody注解,达到:1. 请求JSON消息体映射为JAVA对象2. 返回JAVA对象映射为JSON消息体Step 1. 导入Jackson jar包:Step 2. 在Spring MVC配置中加入annotation-driven,该配置可以确保Requ…

gateway动态路由_无语!SpringCloud Gateway动态路由之Nacos,我已经讲得很清楚了

前言当我们的网关Gateway程序开发完成之后,需要部署到生产环境,这个时候你的程序不能是单点运行的,肯定是多节点启动(独立部署或者docker等容器部署),防止单节点故障导致整个服务不能访问,网关是对客户端的入口与出口&…

json里面的list数据取不出来_sql盲注的困局:利用DNSlog快速导出数据

对于一个sql注入点来说最幸运的就是支持堆叠注入&#xff0c;最蛋疼的就是盲注&#xff0c;盲注里面难搞的就是基于时间的盲注。我们在本地利用这段代码进行演示<?php error_reporting(0); $link mysqli_connect(localhost,root,root); mysqli_set_charset($link,utf8); m…

python怎么测试程序_python如何测试程序

测试函数是用于自动化测试&#xff0c;使用python模块中的unittest中的工具来测试 附上书中摘抄来的代码&#xff1a;#codingutf-8 import unittest from name_function import get_formatted_name class NamesTestCase(unittest.TestCase): def test_first_last_name(self): f…

判定覆盖白盒测试java_白盒测试系列(四)条件判定覆盖

条件判定覆盖一、定义&#xff1a;程序中每个判定至少有一次为真值&#xff0c;有一次为假值,使得程序中每个分支至少执行一次&#xff0c;且使得各判定中的每个条件获得各种可能的取值至少满足一次。二、特点&#xff1a;1、综合了条件覆盖和判定覆盖的特点2、满足条件判定覆盖…

discard python_Netty入门教程(一) 实现DISCARD服务

官方那个给出的介绍是&#xff1a;Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具&#xff0c;用以快速开发高性能、高可靠性的网络服务器和客户端程序。然后我们简单理解一下&#xff0c;这玩意就是个程序&#xff0c;干什么的&am…

python向量化编程技巧_神经网络基础之Python与向量化

Vectorization 深度学习算法中&#xff0c;数据量很大&#xff0c;在程序中尽量减少使用loop循环语句&#xff0c;而可以使用向量运算来提高程序运行速度。 向量化(Vectorization)就是利用矩阵运算的思想&#xff0c;大大提高运算速度。例如下面所示在Python中使用向量化要比使…

SQL server 数据库面试题及答案(实操2)

使用你的名字创建一个数据库 创建表&#xff1a; 数据库中有三张表&#xff0c;分别为student,course,SC&#xff08;即学生表&#xff0c;课程表&#xff0c;选课表&#xff09; 问题&#xff1a; --1.分别查询学生表和学生修课表中的全部数据。--2.查询成绩在70到80分之间…

python电子相册制作软件_电子相册怎么做

电子相册制作 本文来自#千兆网络有什么用#征稿活动&#xff0c;不断提速的网络给你的生活带来了什么变化&#xff1f;快来参与活动&#xff0c;聊聊你玩转互联网&#xff0c;高速网上冲浪的经历&#xff01;>点击这里查看活动详情< 现在手机的拍照功能日趋强大&#xff0…

java list 范围删除_JAVA中循环删除list中元素(移除list两时间范围外的元素)

印象中循环删除list中的元素使用for循环的方式是有问题的&#xff0c;但是可以使用增强的for循环&#xff0c;然后今天在使用时发现报错了&#xff0c;然后去科普了一下&#xff0c;再然后发现这是一个误区。下面就来讲一讲。。伸手党可直接跳至文末。看总结。。JAVA中循环遍历…

python reduce函数_Python reduce()函数的用法小结

reduce()函数也是Python内置的一个高阶函数。 reduce() 格式&#xff1a; reduce (func, seq[, init()]) reduce()函数即为化简函数&#xff0c;它的执行过程为&#xff1a;每一次迭代&#xff0c;都将上一次的迭代结果&#xff08;注&#xff1a;第一次为init元素&#xff0c;…

Php获取id并提交表单,提交表单后 PHP获取提交内容的实现方法

提交表单后 PHP获取提交内容的实现方法2020-06-14 15:35:24问题&#xff1a;网页上提交表单之后&#xff0c;PHP为什么不能获取提交的内容&#xff1f;然而在老版本的PHP上运行却正常。新版的PHP已经废弃了原来的表单内容处理方式&#xff0c;即不再把提交的表单的内容直接复制…

idea查看一个类的所有子类_java new一个对象的过程中发生了什么

java在new一个对象的时候&#xff0c;会先查看对象所属的类有没有被加载到内存&#xff0c;如果没有的话&#xff0c;就会先通过类的全限定名来加载。加载并初始化类完成后&#xff0c;再进行对象的创建工作。我们先假设是第一次使用该类&#xff0c;这样的话new一个对象就可以…

stringbuilder删除最后一个字符_Java类-StingBuffer,StringBuilder

Java提供了String,StringBuffr,StringBuilder类来封装字符串,并提供了一系列操作字符串对象的方法.他们的相同点都是封装字符串;都实现了CharSeqence接口.public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable,CharSequncepublic f…

docker 删除所有镜像_Docker常用命令

&#xfeff;docker 常用命令#查看 Docker 版本 docker version #从 Docker 文件构建 Docker 镜像 docker build -t image-name docker-file-location#运行 Docker 镜像 docker run -d image-name#查看可用的 Docker 镜像 docker images#查看最近的运行容器 docker ps -l#查看所…

php制作学生卡片,PHP基础案例一:展示学生资料卡

一、需求分析&#xff1a;请利用PHP的变量保存学生的姓名、出生日期、所属学科以及学号&#xff0c;最后将该学生的信息输出到网页中显示。其中&#xff0c;在定义学生的出生日期和学号时候&#xff0c;必须满足以下两个条件。1、出生日期为公历&#xff0c;填写格式为YYYY-MM-…

element label动态赋值_基于Element封装可拖动放大缩小的弹窗

ElementUI 自带的对话框组件(el-dialog)没有拖动和最小化的处理&#xff0c;目前业务遇到呼叫弹屏处理&#xff0c;基于el-dialog 再次进行封装下&#xff0c;上篇文章有人说图片换成代码就好了&#xff0c;下面代码部分我就直接放代码了&#xff0c;不再用图片处理了。先看看效…

eeg数据集_运动想象,情绪识别等公开数据集汇总

本文来自脑机接口社区运动影像数据Left/Right Hand MI: http://gigadb.org/dataset/100295Motor Movement/Imagery Dataset: https://www.physionet.org/physiobank/database/eegmmidb/Grasp and Lift EEG Challenge: https://www.kaggle.com/c/grasp-and-lift-eeg-detection/d…

excel批量删除公式保留数据_Excel实用tips(17) – 批量删除隐藏的工作表

大家可能遇到过这种情况&#xff1a;一个几经易手的远古 Excel 表&#xff0c;文件巨大无比&#xff0c;运行极慢&#xff0c;删除数据和公式也无济于事。反复查找原因&#xff0c;才发现表格中有好几十个隐藏的 worksheet&#xff0c;这些 worksheet 大多都是一些草稿表&#…