panads多表联合查询

本文介绍了如何在Pandas中进行多表联合查询。通过ID关联两张表,可以使用merge或join方法。merge参数包括how(默认为'inner')、on、left_on、right_on等,其中how选项对应SQL中的各种连接类型,left_index和right_index则可以基于索引进行合并。当列名重复时,可以使用suffixes参数定制后缀名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有这样一个数据集:

两张表用ID关联着

一、通过ID联合查询

import pandas as pd
students = pd.read_excel("C:/Users/Administrator/Desktop/Student_Score.xlsx",sheet_name="Students")
scores = pd.read_excel("C:/Users/Administrator/Desktop/Student_Score.xlsx",sheet_name='Scores')
data = pd.merge(students,scores)
print(data)

结果:

说明:1.merge如果不指定基于哪个字段,会自动在列中查找相同的字段进行匹配

           2.如果在读取时,设置了index_col,要在merge中设置on='ID',或者用left_on 和right_on

           3.如果在读取时,设置了index_col,用join可直接联立查询,不需设置on

data = students.join(scores,how='left').fillna(0)
data.Score = data.Score.astype(int)
print(data)

 

merge参数:DataFrame.merge(right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

主要常用参数介绍:

* left,right:表示想要进行合并的DataFrame
* how,值可以是inner,left,right,outer,mysql的sql查询操作,默认值是inner
* left_on,right_on是用来指定希望用来作用合并依据的列名,如果不指定的话会自动寻找列名相同的列进行合并
* left_index,right_index设置为True的话表示使用该DF的列索引作为合并的根据进行合并
* sort默认为False,设置为True时表示合并时会根据给定的列值(也就是前面的left_on这种指定的列的值)来进行排序后再输出
* suffixes是用来给重名的列增加后缀名的,可以使用默认值也可以自己修改,比如要合并df1和df2都有一个列的名字是data,那么合并后left的DF的data列名变为了data_x
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值