赞
踩
① inner join(取交集,数据交叉的部分,取出来。)
② left join (以左表为主,合并数据。最后合并出来的数据,主要的key 只能出现 左表中的 数据。所以可以用 left join 来检验 右表是否存在左表中的某个数据。)
③ right join (以右表为主,合并数据。最后合并出来的数据,主要的key 只能出现 右表中的 数据。所以可以用来 检验坐标中 是否存在右表中的某个数据,)
④ outer(取并集,数据直接合并不考虑主次。)
import pandas as pd import numpy as np print(np.arange(6)) 数据1 = pd.DataFrame({'姓名':['aa','bb','cc','dd','ee','ff'],'age1':np.arange(6)}) 数据2 = pd.DataFrame({'姓名':['aa','bb','cc'],'age2':np.arange(3)}) # merge 默认就是取 交集,即 inner 数据3 = pd.merge(数据1,数据2) 数据3 = pd.merge(数据1,数据2,on = '姓名',how = 'inner') print(数据3) print("*"*30) 数据3 = pd.merge(数据1,数据2,on = '姓名',how = 'left') print(数据3) print("*"*30) 数据3 = pd.merge(数据1,数据2,on = '姓名',how = 'right') print(数据3) print("*"*30) 数据3 = pd.merge(数据1,数据2,on = '姓名',how = 'outer') print(数据3) print("*"*30)
import pandas as pd
数据1 = pd.DataFrame({"姓名":['aa','aa','cc'],'班级':[1,2,1],'分数':[10,20,30]})
数据2 = pd.DataFrame({"姓名":['aa','aa','cc','cc'],'班级':[1,1,1,2],'分数':[40,50,60,70]})
print(数据1)
print("*"*30)
print(数据2)
print("*"*30)
数据3 = pd.merge(数据1,数据2,on = ['姓名','班级'],how = 'right')
print(数据3)
以 多个列 为主,进行连接。这个时候 必须 各个列的值 都对应上。才能进行 有效的连接。
import pandas as pd import numpy as np 数据1 = pd.DataFrame({'姓名':['aa','bb','dd','aa','bb'],'次数':range(5)}) 数据2 = pd.DataFrame({'数据':[10,20]},index=['aa','bb']) print(数据1) print("*"*30) print(数据2) # 用左表的 姓名列 连接 右表的索引 数据3 = pd.merge(数据1,数据2,left_on='姓名',right_index=True,how = 'inner') 数据4 = 数据1.join(数据2) print(数据3) print("*"*30) print(数据4)
有时候,我们 一张表的 列和另一张的索引 还可能有关系。那么我们就要 特别的指明,左右表的 哪一列?和 左右表的哪一索引,然后 再提供连接方式即可。
import pandas as pd
import numpy as np
数据1 = pd.DataFrame({'姓名':['aa','bb','dd','aa','bb'],'次数':range(5)})
数据8 = pd.DataFrame({'数据':[10,20]})
数据4 = 数据1.join(数据8)
print(数据4)
切记,索引 一样的时候,才能 横向连接 成功。因为 横向连接,依靠的就是 索引。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。