Python数据分析补充:多表合并与连接

在平时的学习或工作中可能会涉及多张表的操作,例如:将表结构先沟通(即变量个数和变量类型均仙童)的多张表纵向合并到一张长表中。将多张表的变量水平扩展到一张宽表中。如果对数据SQL语法比较熟悉,那表之间的合并和连接就非常简单了,对于多张表的合并,只需要使用UNION或NION ALL关键词,对于多张表之间的连接只需要使用INNER JOIN或LEFT JOIN即可。需要注意的是对于多表之间的纵向合并,必须确保夺标的列数和数据类型一致;对于多表之间的水平扩展,则必须保证多表之间拥有共同的匹配变量。
摘要由CSDN通过智能技术生成

在平时的学习或工作中可能会涉及多张表的操作,例如:

  • 将表结构先沟通(即变量个数和变量类型均仙童)的多张表纵向合并到一张长表中。
  • 将多张表的变量水平扩展到一张宽表中。

如果对数据SQL语法比较熟悉,那表之间的合并和连接就非常简单了,对于多张表的合并,只需要使用UNION或NION ALL关键词,对于多张表之间的连接只需要使用INNER JOIN或LEFT JOIN即可。

需要注意的是
对于多表之间的纵向合并,必须确保夺标的列数和数据类型一致;
对于多表之间的水平扩展,则必须保证多表之间拥有共同的匹配变量。

对于Python来说,Pandas模块提供了对应的concat函数和merge函数来实现纵向合并和横向合并。

一、合并函数concat()

concat()函数的语法如下

pd.concat(objs,axis=0,join='outer',jokin_axes=None,ignore_index=False,keys=None)

函数的参数说明如下:

  • objs:指定需要合并的对象,可以是序列、数据框或面板数据构成的列表。
  • axis:指定数据合并的轴,默认为0,表示合并多个数据的行(行数发生了变化),如果为1,则表示合并多个数据的列(列数发生了变化)。
  • join:指定合并的方式,默认为outer,表示合并所有数据,如果改为inner,则表示合并公共部分的数据。
  • join_axes:合并数据后,指定保留的数据轴。
  • ignore_index:bool类型的参数,表示是否忽略原数据集的索引,默认为False,如果设置为True,则表示忽略原索引并生成新索引。
  • keys:为合并后的数据添加新索引,用于区分各个数据部分。

对于合并函数concat()有两点需要强调:

  1. 如果纵向合并多个数据集,即使这些数据集都含有“姓名”变量,但变量名称不一致,如Name和name,通过合并后将会得到错误的结果。
  2. join_axes参数的使用,例如该参数等于[df.index],则表示保留与df行标签值一样的数据,但需要配合axis=1一起使用(即实现的是变量横向合并操作);如果等于[df.columns],则保留df中所有变量值一样的数据,但不需要添加axis=1的约束。

concat()函数的使用方法如下:

import pandas as pd

# 构造数据集df1和df2
df1= pd.DataFrame({
   'name':['lily','lucy','tom'],
                 'age':[21,25,22],
                 'gengder':['female','female','male']})

df2 = pd.DataFrame({
   'name':['david','慕容复']<
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值