目录
1、pd.merge(left, right, how='inner')
2、pd.concat([left,right],axis=1,join='inner’)
1、pd.merge(left, right, how='inner')
- left:指定需要连接的主表
- right:指定需要连接的辅表
- on: 用于连接的列名
- how:指定连接方式,默认为inner内连,还有其他选项,如左连left、右连right和外连outer
根据指定列进行连接:
import pandas as pd
list1 = [['赵一', 23, '男'], ['钱二', 27, '女'], ['孙三', 26, '女']]
list2 = [['赵一', '游泳'], ['李四', '唱歌'], ['周五', '下棋']]
df1 = pd.DataFrame(list1, columns=['姓名', '年龄', '性别'], index=['a', 'b', 'c'])
df2 = pd.DataFrame(list2, columns=['姓名', '爱好'], index=[1, 2, 3])
# 左连接 --左表全要,右表与之匹配
print(pd.merge(df1, df2, on='姓名', how='left'))
# 右连接 --右表全要,左表与之匹配
print(pd.merge(df1, df2, on='姓名', how='right'))
# 内连接 --只有共有部分匹配
print(pd.merge(df1, df2, on='姓名', how='inner'))
# 外连接 --先将共有部分匹配,再将独有部分缺少数据填充空堆叠
print(pd.merge(df1, df2, on='姓名', how='outer'))
运行结果:
左连接:
姓名 年龄 爱好_x 爱好_y
0 赵一 23 下棋 游泳
1 钱二 27 游泳 NaN
2 孙三 26 唱歌 NaN
右连接:
姓名 年龄 爱好_x 爱好_y
0 赵一 23.0 下棋 游泳
1 李四 NaN NaN 唱歌
2 周五 NaN NaN 下棋
内连接:
姓名 年龄 爱好_x 爱好_y
0 赵一 23 下棋 游泳
外连接:
姓名 年龄 爱好_x 爱好_y
0 赵一 23.0 下棋 游泳
1 钱二 27.0 游泳 NaN
2 孙三 26.0 唱歌 NaN
3 李四 NaN NaN 唱歌
4 周五 NaN NaN 下棋
2、pd.concat([left,right],axis=1,join='inner’)
- left:指定需要连接的主
- right:指定需要连接的辅表
- axis::axis =1用于横向,axis =0代表纵向(默认为0)
- join:指定连接方式,只有outer,inner 两种
- ignore_index:如果为True,不使用并重置轴上的索引值。结果轴将被标记为0,...,n-1。
- keys:序列,默认值无。使用传递的键作为最外层构建层次索引。如果为多索引,应该使用元组。