Pandas库:从入门到应用(三)——多表数据连接

本文深入探讨了Pandas库中的数据连接,包括concat函数的行、列连接,详细阐述了不同连接模式的用法。此外,还介绍了如何使用insert函数在DataFrame中插入数据,以及merge函数实现SQL风格的内、外连接操作。
摘要由CSDN通过智能技术生成
一 、concat数据连接
1.1、concat()函数参数
pd.concat(objs, axis=0, join='outer', ignore index=False, keys=None, levels=None, names=Noneverify integrity=False, sort= False, copy=True)

objs:多个 DataFrame 或者 Series
axis:0-行拼接 1-列拼接
join:{‘inner’,'outer’},其他轴上的数据是按交集 (inner) 还是并集 (outer) 进行合并inner
ignore_index:布尔类型,是否保留原表索引
keys:列表,使用传递的键作为最外层级别来构造层次结构索引,就是给每个表指定一个一级索引
levels:列表,用于构造Multilndex的特定级别
names:列表,索引的名称,包括多层索引
verify_integrity:布尔类型,参数为True时,如果合并的数据与原数据包含索引相同的行,将报错
sort:布尔类型,对非连接轴进行排序
copy:布尔类型,是否进行深拷贝

1.2、行连接
1.2.1、数据准备
import numpy as np
import pandas as pd

df1 = pd.DataFrame(data=np.random.randint(1,151,size=(5,4))
                  ,columns=['Python','Math','English','Chinese']
                  ,index=list('abcde'))
df1

在这里插入图片描述

df2 = pd.DataFrame(data=np.random.randint(1,151,size=(5,4))
                   ,columns=['Java','Math','English','Chinese']
                   ,index=list('xyzab'))
df2

在这里插入图片描述

1.2.2、并集模式拼接(join=‘outer’)
pd.concat([df2,df1],axis=0) #df1与df2行拼接

在这里插入图片描述

df2.append(df1) #使用append 追加 达到拼接效果

在这里插入图片描述

1.2.3、交集模式拼接(join=‘inner’)
pd.concat([df1,df2],axis=0,join='inner')

在这里插入图片描述

1.3、列连接
1.3.1、并集模式拼接(join=‘outer’)
pd.concat([df1,df2],axis=1,join='outer')

在这里插入图片描述

1.3.2、交集模式拼接(join=‘inner’)
pd.concat([df1,df2],axis=1,join='inner')

在这里插入图片描述

二、insert数据插入
2.1、insert函数参数
df.insert(loc,column,value,allow_duplicates)

loc:#int 使用整数定义_列数据_插入的位置,必须是0到columns列标签的长度 0 <= loc <= len(columns)
column: # 可选字符串、数字或者object;列标签名
value: # 整数、Series或者数组型数据
allow_duplicates: # 可选参数,如果dataframe中已经存在某列,将allow_duplicates置为true才可以将指定得列插入

2.2、插入不存在列数据
import numpy as np
import pandas as pd


df1 = pd.DataFrame(data=np.random.randint(1,151,size=(5,4))
                   ,columns=['Python','Math','English','Chinese']
                   ,index=list('abcde'))

df1.insert(loc=1,column='Java',value=100) #插入Java列数据 值为100
df1

在这里插入图片描述

2.3、插入存在列数据
df1.insert(loc=1,column='Python',value=100) #插入Python列数据 值为100

在这里插入图片描述

直接报错了,必须要加上参数allow_duplicates=True

df1.insert(loc=1,column='Python',value=100,allow_duplicates=True)#插入Python列数据 值为100
df1

在这里插入图片描述

三、merge数据合并(sql join风格)
3.1、merge函数参数
pd.merge(DataFrame2, how=‘inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', ‘_y'))
how默认为inner,可设为inner/outer/left/right
on根据某个字段进行连接,必须存在于两个DateFrame中(若未同时存在,则需要分别使用left_on和right_on来设置)
left_on左连接,以DataFrame1中用作连接键的列
right_on右连接,以DataFrame2中用作连接键的列
left_index将DataFrame1行索引用作连接键
right_index将DataFrame2行索引用作连接键
sort根据连接键对合并后的数据进行排列,默认为True
suffixes对两个数据集中出现的重复列,新数据集中加上后缀_x,_y进行区别
3.2、使用inner内连接模式
import pandas as pd
import numpy as np
# 表⼀中记录的是name和体重信息
df1 = pd.DataFrame(data = {'name':['softpo','Daniel','Brandon','Ella'],'weight':[70,55,75,65]})

# 表⼆中记录的是name和身⾼信息
df2 = pd.DataFrame(data = {'name':['softpo','Daniel','Brandon','Cindy'],'height':[172,170,170,166]})

df3 = pd.DataFrame(data = {'名字':
                               ['softpo','Daniel','Brandon','Cindy'],'height':[172,170,170,166]})
# 根据共同的name将俩表的数据,进⾏合并
pd.merge(df1,df2,
         how = 'inner',# 内合并代表两对象交集
         on = 'name' #两个表的关联建,即相同便可以关联上,不同数据就关联不上
         )

在这里插入图片描述

3.3、使用outer外连接模式
pd.merge(df1,df3,
         how = 'outer',# 全外连接,两对象并集
         left_on = 'name',# 左边DataFrame使⽤列标签 name进⾏合并
         right_on = '名字')# 右边DataFrame使⽤列标签 名字进⾏合并

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值