【Python数据科学】多表关联 merge、join、concat

本文介绍了使用 Pandas 进行数据整合的三种方法:merge、join 和 concat,并通过实例展示了如何进行内连接、基于索引的连接及数据堆叠。

>>>import pandas as pd
>>>position=pd.read_csv('DataAnalyst.csv',encoding='gbk')
>>>company=pd.read_csv('company_sql.csv',encoding='gbk')
>>>company.head()
companyIdcompanyFullNamecompanyLabelListcompanyShortNamecompanySizebusinessZones
08581纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
123177上海点荣金融信息服务有限责任公司['节日礼物', '带薪年假', '岗位晋升', '扁平管理']点融网500-2000人['五里桥', '打浦桥', '制造局路']
257561上海晶樵网络信息技术有限公司['技能培训', '绩效奖金', '岗位晋升', '管理规范']SPD50-150人['打浦桥']
37502杭州数云信息技术有限公司上海分公司['绩效奖金', '股票期权', '五险一金', '通讯津贴']数云150-500人['龙华', '上海体育场', '万体馆']
4130876上海银基富力信息技术有限公司['年底双薪', '通讯津贴', '定期体检', '绩效奖金']银基富力15-50人['上海影城', '新华路', '虹桥']
>>>position.head()
citycompanyFullNamecompanyIdcompanyLabelListcompanyShortNamecompanySizebusinessZonesfirstTypesecondTypeeducationindustryFieldpositionIdpositionAdvantagepositionNamepositionLablesbottomtopavgworkYear
0上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术数据开发硕士移动互联网2537336知名平台数据分析师['分析师', '数据分析', '数据挖掘', '数据']798.0应届毕业生
1上海上海点荣金融信息服务有限责任公司23177['节日礼物', '带薪年假', '岗位晋升', '扁平管理']点融网500-2000人['五里桥', '打浦桥', '制造局路']技术数据开发本科金融2427485挑战机会,团队好,与大牛合作,工作环境好数据分析师-CR2017-SH2909['分析师', '数据分析', '数据挖掘', '数据']101512.5应届毕业生
2上海上海晶樵网络信息技术有限公司57561['技能培训', '绩效奖金', '岗位晋升', '管理规范']SPD50-150人['打浦桥']设计数据分析本科移动互联网2511252时间自由,领导nic数据分析师['分析师', '数据分析', '数据']465.0应届毕业生
3上海杭州数云信息技术有限公司上海分公司7502['绩效奖金', '股票期权', '五险一金', '通讯津贴']数云150-500人['龙华', '上海体育场', '万体馆']市场与销售数据分析本科企业服务,数据服务2427530五险一金 绩效奖金 带薪年假 节日福利大数据业务分析师【数云校招】['商业', '分析师', '大数据', '数据']687.0应届毕业生
4上海上海银基富力信息技术有限公司130876['年底双薪', '通讯津贴', '定期体检', '绩效奖金']银基富力15-50人['上海影城', '新华路', '虹桥']技术软件开发本科其他2245819在大牛下指导BI开发/数据分析师['分析师', '数据分析', '数据', 'BI']232.5应届毕业生
1.merge
#用法1:dataframe下的merge#
#on针对两个表的连接字段相同
>>>position.merge(right=company,how='inner',on='companyId')
citycompanyFullName_xcompanyIdcompanyLabelList_xcompanyShortName_xcompanySize_xbusinessZones_xfirstTypesecondTypeeducation...positionLablesbottomtopavgworkYearcompanyFullName_ycompanyLabelList_ycompanyShortName_ycompanySize_ybusinessZones_y
0上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术数据开发硕士...['分析师', '数据分析', '数据挖掘', '数据']798.0应届毕业生纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
1上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术后端开发本科...['数据分析', '数据']203025.03-5年纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
2上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术后端开发本科...['大数据', '数据库', '数据']204030.05-10年纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
3上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术数据开发本科...['数据分析', '数据']152520.05-10年纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
..................................................................
6818天津天津美源星商贸有限公司112379['年底双薪', '绩效奖金', '年终分红', '午餐补助']天津美源星150-500人NaN职能行政不限...['行政', '数据']343.5不限天津美源星商贸有限公司['年底双薪', '绩效奖金', '年终分红', '午餐补助']天津美源星150-500人NaN
6819天津北京瑞达恒建筑咨询股份有限公司32877['技能培训', '年底双薪', '带薪年假', '绩效奖金']瑞达恒RCC500-2000人['尖山']市场与销售数据分析大专...['商业', '数据']354.0不限北京瑞达恒建筑咨询股份有限公司['技能培训', '年底双薪', '带薪年假', '绩效奖金']瑞达恒RCC500-2000人['尖山']
6820天津天津小猫网络科技有限公司52887['技能培训', '股票期权', '绩效奖金', '扁平管理']天津小猫15-50人['和平路', '火车站', '后广场']技术高端技术职位本科...['职业培训', '教育', '培训', '大数据', '讲师', '合伙人', '数据',...81511.5不限天津小猫网络科技有限公司['技能培训', '股票期权', '绩效奖金', '扁平管理']天津小猫15-50人['和平路', '火车站', '后广场']
6821北京普信资产管理有限公司59239['节日礼物', '技能培训', '绩效奖金', '岗位晋升']龙宝斋财富2000人以上['京广桥']开发/测试/运维类软件开发本科...['专家', '高级', '软件开发']153022.53-5年普信资产管理有限公司['节日礼物', '技能培训', '绩效奖金', '岗位晋升']龙宝斋财富2000人以上['京广桥']
6822北京北京富通基业投资有限公司156832['节日礼物', '美女多', '帅哥多', '技能培训']北京富通基业投资有限公司50-150人['西二旗']市场/商务/销售类销售不限...['顾问', '销售', '分析师']465.0不限北京富通基业投资有限公司['节日礼物', '美女多', '帅哥多', '技能培训']北京富通基业投资有限公司50-150人['西二旗']

6823 rows × 24 columns

#将company表的companyId改成id#
>>>col =list(company.columns)
>>>col[0]='yuiyi'
#将修改好的列表赋值给表字段
>>>company.columns=col
'yuiyi'
>>>company.head()
yuiyicompanyFullNamecompanyLabelListcompanyShortNamecompanySizebusinessZones
08581纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
123177上海点荣金融信息服务有限责任公司['节日礼物', '带薪年假', '岗位晋升', '扁平管理']点融网500-2000人['五里桥', '打浦桥', '制造局路']
257561上海晶樵网络信息技术有限公司['技能培训', '绩效奖金', '岗位晋升', '管理规范']SPD50-150人['打浦桥']
37502杭州数云信息技术有限公司上海分公司['绩效奖金', '股票期权', '五险一金', '通讯津贴']数云150-500人['龙华', '上海体育场', '万体馆']
4130876上海银基富力信息技术有限公司['年底双薪', '通讯津贴', '定期体检', '绩效奖金']银基富力15-50人['上海影城', '新华路', '虹桥']
#两张表的连接字段名称已经不一致了
#需要用到left_on 和right_on分别指代
>>>position.merge(right=company,how='inner',left_on='companyId',right_on='yuiyi')
citycompanyFullName_xcompanyIdcompanyLabelList_xcompanyShortName_xcompanySize_xbusinessZones_xfirstTypesecondTypeeducation...bottomtopavgworkYearyuiyicompanyFullName_ycompanyLabelList_ycompanyShortName_ycompanySize_ybusinessZones_y
0上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术数据开发硕士...798.0应届毕业生8581纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
1上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术后端开发本科...203025.03-5年8581纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
2上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术后端开发本科...204030.05-10年8581纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
3上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术数据开发本科...152520.05-10年8581纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
4武汉纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上NaN技术管理岗本科...152520.03-5年8581纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
#用法2:pandas下面的merge#
pd.merge(position,company,left_on='companyId',right_on='yuiyi')
citycompanyFullName_xcompanyIdcompanyLabelList_xcompanyShortName_xcompanySize_xbusinessZones_xfirstTypesecondTypeeducation...bottomtopavgworkYearyuiyicompanyFullName_ycompanyLabelList_ycompanyShortName_ycompanySize_ybusinessZones_y
0上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术数据开发硕士...798.0应届毕业生8581纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
1上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术后端开发本科...203025.03-5年8581纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
2上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术后端开发本科...204030.05-10年8581纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
3上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术数据开发本科...152520.05-10年8581纽海信息技术(上海)有限公司['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']
..................................................................
6819天津北京瑞达恒建筑咨询股份有限公司32877['技能培训', '年底双薪', '带薪年假', '绩效奖金']瑞达恒RCC500-2000人['尖山']市场与销售数据分析大专...354.0不限32877北京瑞达恒建筑咨询股份有限公司['技能培训', '年底双薪', '带薪年假', '绩效奖金']瑞达恒RCC500-2000人['尖山']
6820天津天津小猫网络科技有限公司52887['技能培训', '股票期权', '绩效奖金', '扁平管理']天津小猫15-50人['和平路', '火车站', '后广场']技术高端技术职位本科...81511.5不限52887天津小猫网络科技有限公司['技能培训', '股票期权', '绩效奖金', '扁平管理']天津小猫15-50人['和平路', '火车站', '后广场']
6821北京普信资产管理有限公司59239['节日礼物', '技能培训', '绩效奖金', '岗位晋升']龙宝斋财富2000人以上['京广桥']开发/测试/运维类软件开发本科...153022.53-5年59239普信资产管理有限公司['节日礼物', '技能培训', '绩效奖金', '岗位晋升']龙宝斋财富2000人以上['京广桥']
6822北京北京富通基业投资有限公司156832['节日礼物', '美女多', '帅哥多', '技能培训']北京富通基业投资有限公司50-150人['西二旗']市场/商务/销售类销售不限...465.0不限156832北京富通基业投资有限公司['节日礼物', '美女多', '帅哥多', '技能培训']北京富通基业投资有限公司50-150人['西二旗']

6823 rows × 25 columns

2.join 基于索引

df1 =  pd.DataFrame(
    {
        'A' :list('abcd'),
        'B' :list('efgh')
    
    }
)
>>>df1
AB
0ae
1bf
2cg
3dh
df2=pd.DataFrame(
    {
        'C':list('abcd'),
        'D':list('efgh')
    }
)
>>>df2
CD
0ae
1bf
2cg
3dh
#基于索引拼接
>>>df1.join(df2)
ABCD
0aeae
1bfbf
2cgcg
3dhdh
3.concat 堆叠(union)
#上下堆叠#
>>>pd.concat([df1,df2])
ABCD
0aeNaNNaN
1bfNaNNaN
2cgNaNNaN
3dhNaNNaN
0NaNNaNae
1NaNNaNbf
2NaNNaNcg
3NaNNaNdh
#左右堆叠
>>>pd.concat([df1,df2],axis=1)
ABCD
0aeae
1bfbf
2cgcg
3dhdh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值