程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python自动化-Excel:pandas之merge

hfteth 2025-05-15 18:04:44 技术文章 6 ℃

merge:连接查询(数据合并与重塑)

merge:将两个DataFrame根据一些共有的列连接起来:inner(默认的,可以不写)内连接(共有的),left左连接,right右连接,outer全外连接

import pandas as pd
import numpy as np
df1 = pd.DataFrame({'姓名':['张三','李四','王五','李四','张三','张三'],'出手次数':np.arange(6)})
df2 = pd.DataFrame({'姓名':['陆六','王五','李四'],'出手次数2':[1,2,3]})
print(df1)
print("*"*10)
print(df2)
print('-'*10)

# 用“姓名”连接,连接方式:内连接
df3 = pd.merge(df1,df2,on='姓名',how='inner')
print(df3)
print('~'*10)
# 左连接,谁在左边就以谁为标准
df4 = pd.merge(df1,df2,on='姓名',how='left')
print(df4)
print('='*10)
# 右连接
df5 = pd.merge(df1,df2,on='姓名',how='right')
print(df5)
print('+'*10)
# 全连接
df6 = pd.merge(df1,df2,on='姓名',how='outer')
print(df6)

多key连接,on用列表

import pandas as pd
df1 = pd.DataFrame({'姓名':['张三','张三','王五'],'班级':['1班','2班','1班'],'分数':[10,20,30]})
df2 = pd.DataFrame({'姓名':['张三','张三','王五','王五'],'班级':['1班','1班','1班','2班'],'分数':[40,50,60,70]})
print(df1)
print("*"*10)
print(df2)
print('-'*10)
# 内连接
df3 = pd.merge(df1,df2,on=['姓名','班级'])
print(df3)
print('~'*10)
# 外连接
df4 = pd.merge(df1,df2,on=['姓名','班级'],how='outer')
print(df4)

基于索引连接

import pandas as pd
df1 = pd.DataFrame({'姓名':['张三','李四','王五','张三','李四'],'次数':range(5)})
df2 = pd.DataFrame({'数据':[10,20]},index=['张三','李四'])
print(df1)
print("*"*10)
print(df2)
print('-'*10)
# 内连接
df3 = pd.merge(df1,df2,left_on='姓名',right_index=True)
print(df3)
print('~'*10)
# 外连接
df4 = pd.merge(df1,df2,left_on='姓名',right_index=True,how='outer')
print(df4)

参考资料:

B站:孙兴华《中文讲Python从入门到办公自动化》

Tags:

最近发表
标签列表