python中pandas模块(join方法)实现SQL Server中的表关联join

python连接sql server的方法,可以参考这篇文章:python连接SQL Server:Pymssql模块

基于下面的数据,分别用sql 和 python,实现数据集的关联,得到 学生、课程、成绩 的数据。

建表可以参考:python中pandas的集合关联(merge) 与SQL Server中表关联join的对比


SQL Server中用join实现表的关联,在python中pandas的merge可以实现表关联,此外,还可以用join来实现。

用pandas的join来实现关联,要比merge来的复杂,因为join的功能相对较弱,默认情况下是两个数据的index的关联,

通过参数on 可以指定用字段 和另一个集合的index进行关联。

# -*- coding:gbk -*-  
  
import pymssql as pm  
from pandas import DataFrame #行列结构  
import pandas as pd  
  
conn = pm.connect(host='localhost',user='sa',password='momogua',database='test')  
  
cur = conn.cursor()  
  
#获取sc表的数据,格式化  
cur.execute('select * from sc')  
sc = cur.fetchall()  
dsc = DataFrame(sc,columns = ['sid','cid','score'])

  
#获取student表的数据,格式化  
cur.execute('select sid,sname from student')  
student = cur.fetchall()  
dstudent = DataFrame(student,columns=['sid','sname'])
dstudent.set_index('sid',inplace=True)  #把sid设置为index
  
#获取course表的数据,格式化  
cur.execute('select cid,cname from course')  
course = cur.fetchall()  
dcourse = DataFrame(course,columns=['cid','cname'])
dcourse.set_index('cid',inplace=True)   #把cid设置为index
  
  
#合并sc表与student表,把sc的sid列与student的index进行关联  
sc1 = dsc.join(dstudent,on='sid',how='inner')
  
#在把合并的结果,和course表合并 ,把上面结果的cid列 与 course的index进行关联 
sc2 = sc1.join(dcourse,on='cid',how='inner')
  
#取sname,cname,score 3列  
r = sc2[['sname','cname','score']]

#按照索引排序,就地排序
r.sort_index(inplace=True)

print r


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值