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

b01352d77667e01d47a8f9f6284be392.png

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

一、数据合并

1、连接表,

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

  • 创建3个DataFrame表格

38aabbaae81921e5230496e4d984c713.png

查看一下三个表的数据

06d28cab6438ee6905f91737a3428c3c.png

46bfbe296f63adfd1bc1694b3c4ce827.png

dad2131689c958f11cfc16b2b052457f.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

9f9db8b78f76ab48025cdbe551c668d5.png
  • 通过keys参数设置连接df1、df2、df3的值为x、y、z

eb18be37b959273249fa671fbfd639ca.png
  • 新增加一个df4表,横向连接到df1表的第2、3、6、7列

e3b48359838050381cf02291c6776638.png
  • 将df1和df4横向进行交集合并

4782c052a65c1c1b0eb6fb0d62c0a599.png

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

  • 按照df1的索引进行df1表和df4表的横向索引

4ada148d96d66d5b7533c3c6d9695a93.png
  • 结果可以看出合并是按照df1表的索引进行合并的。
  1. 通过append()方法连接表格
  • 连接df1和df2

9472db675b4f97837c9197f9c6c5e575.png
  • 连接df1和df4表

c0fd3fe16114db5b4f2d047b516b7551.png

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

  • 连接df1、df2、df3表

6b111557e672ec0d5cfd3324dc33b4d0.png
  • 忽略连接轴上的上的索引

d7400de9169faa4378db91e840ca4c13.png
  • 新增加一个s1表,并且跟df1进行横向合并

8b5bbd4b73cc5c891f37fdb54e8fea27.png
  • 新增加一个s2表,并且跟df1进行多次连接

697b56ad87d170ee5866d38b6daab77a.png

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

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

782b166f6113841bb45f12b88058aa22.png

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

1.3、附加行

7b8ac5c89775716f680927ca266a8acf.png

de8f2f411c6aa40f228c0883764877b4.png

e6426f367cf41e76829d79a5b988290e.png

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

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

2.1、单个键进行连接

  • 创建两个表格并查看

55cc0a8b1f8c0215d52f161ed64b1fd8.png
  • 将key作为两个表连接的中介

b0979b32dfc876f19a9cf7bf320af251.png

2.2、多个键进行连接

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

2d8f2f07f95d5215da82ec773ad97c45.png

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

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

438397e065f4c37b90b727edb56e125e.png

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

  • 以右表的key1、key2位主键进行连接

5e15210a43c4face078192e0355ecdb0.png
  • 以两个表所有的key1、key2的元素都取出来

f64168a90d3874c61c8012271df163ee.png
  • 当两个表列名相同时进行合并

22c882e6becd069cee759bc6f542b1aa.png

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

2.3、合并指示符

  • 以并集进行合并

8cca883bf70ef9796746f18f99471c76.png

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

9d4883804dfdc9b724df73421b5984ed.png

2.4、通过索引进行连接

  • 通过左表索引连接右表

f6c25a48c5def24600c4ae712dc7cc44.png
  • 左表连接右表,求并集的形式

c908947c4bf8cf390e3d6bab20c81216.png

0e8a3db278ead2ed01ef4367b1d32eaa.png
  • 左表连右表,求交集的形式

3d86630c14722ab5852abea590836ac2.png

36a20ec0495d01603f3b3fb70517c3a1.png

2.5、通过索引和某列连接

017d2b9fbfc05503651443db14dcc864.png

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

2.6、重叠列名称的合并

363ea47a6ae8f1c600ab4fd2d519af33.png

2.7、数据框拼接

5d42c12c5c0dba34482e8d6b401d2253.png

93102f42900c537e048f22f90a5824ef.png

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

68ce05ae6bd84f976b077160fe0cc63e.png

二、数据重塑及透视表

1、多重索引

  • 创建表格并查看

851a08cb51d1f59bc978a37593de13f3.png
  • 查看animal和hair_length下的所有数据

8ba861b99cb3b4c4ebddb2950d70e714.png

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

f19fc1e90b2cd72ff2f7508644c69592.png
  • 创建表格并查看

157c6355d9ced4883790fa3178d59083.png

使用level参数进行调用

  • 查看exp下面的属性值

6f95e2090228a5e97a0c5cc458b31aa6.png
  • 查看anmal下面的属性值

05defe2a1252c3101d40bfec1be8799c.png
  • 调用数据

55fe3e5f006f393e1e0bb554ca3007cd.png

9b97f53bb9df234a8da4bb7a5661bac4.png
  • 调用first数据

359f938254e34ed22d6bbf76c438631b.png
  • 调用second数据

ed9585af9a2a4974d29cd979068f141e.png

2、透视表

  • 创建一个透视表

cefa78a9aa8d169e2c3cda57017cb4d8.png
  • 查看D列,索引为A,B,列为C的所有数据

ed2726d3c75e94a62a3e1fa05abd970e.png
  • 查看D列,索引为B,列为A,C的所有数据求和

19ee3a3844e98a9701ca9b0063ecfc26.png
  • 查看DE列,索引为B,列为A,C的求和数据

f51409db8d6638e80eb1a19c98501b7c.png
  • 查看索引为A,B,列为C的数据

5149ceff42c84bf13cec5312eb40bd74.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值