Pandas中merge如何合并DataFrame
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,小编给大家分享一下Pandas中merge如何合并DataFrame,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!merg
千家信息网最后更新 2025年12月02日Pandas中merge如何合并DataFrame
小编给大家分享一下Pandas中merge如何合并DataFrame,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
merge合并DataFrame
import pandas as pdleft=pd.DataFrame({ 'key':['k0','k1','k2','k3','k4','k5'], 'A':['A0','A1','A2','A3','A4','A5'], 'B':['B0','B1','B2','B3','B4','B5']})right=pd.DataFrame({ 'key':['k0','k1','k2','k3','k4','k5'], 'C':['C0','C1','C2','C3','C4','C5'], 'D':['D0','D1','D2','D3','D4','D5']})print(left)print('-'*20)print(right)key A B0 k0 A0 B01 k1 A1 B12 k2 A2 B23 k3 A3 B34 k4 A4 B45 k5 A5 B5-------------------- key C D0 k0 C0 D01 k1 C1 D12 k2 C2 D23 k3 C3 D34 k4 C4 D45 k5 C5 D5
# 合并res=pd.merge(left,right)print(res)print('-'*20)# 指定合并的keyres=pd.merge(left,right,on='key')print(res)key A B C D0 k0 A0 B0 C0 D01 k1 A1 B1 C1 D12 k2 A2 B2 C2 D23 k3 A3 B3 C3 D34 k4 A4 B4 C4 D45 k5 A5 B5 C5 D5-------------------- key A B C D0 k0 A0 B0 C0 D01 k1 A1 B1 C1 D12 k2 A2 B2 C2 D23 k3 A3 B3 C3 D34 k4 A4 B4 C4 D45 k5 A5 B5 C5 D5
left = pd.DataFrame({'key1': ['K0', 'K1', 'K2', 'K3'], 'key2': ['K0', 'K1', 'K2', 'K3'], 'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']})right = pd.DataFrame({'key1': ['K0', 'K1', 'K2', 'K3'], 'key2': ['K0', 'K1', 'K2', 'K4'], 'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']})print(left)print('-'*20)print(right)key1 key2 A B0 K0 K0 A0 B01 K1 K1 A1 B12 K2 K2 A2 B23 K3 K3 A3 B3-------------------- key1 key2 C D0 K0 K0 C0 D01 K1 K1 C1 D12 K2 K2 C2 D23 K3 K4 C3 D3
# 默认取交集 how='inner'res=pd.merge(left,right,on=['key1','key2'])print(res)
key1 key2 A B C D0 K0 K0 A0 B0 C0 D01 K1 K1 A1 B1 C1 D12 K2 K2 A2 B2 C2 D2
# how='outer' 取并集res=pd.merge(left,right,on=['key1','key2'],how='outer')print(res)
key1 key2 A B C D0 K0 K0 A0 B0 C0 D01 K1 K1 A1 B1 C1 D12 K2 K2 A2 B2 C2 D23 K3 K3 A3 B3 NaN NaN4 K3 K4 NaN NaN C3 D3
# 显示合并数据中数据来自哪个表res=pd.merge(left,right,on=['key1','key2'],how='outer',indicator=True)print(res)
key1 key2 A B C D _merge0 K0 K0 A0 B0 C0 D0 both1 K1 K1 A1 B1 C1 D1 both2 K2 K2 A2 B2 C2 D2 both3 K3 K3 A3 B3 NaN NaN left_only4 K3 K4 NaN NaN C3 D3 right_only
# 左链接res=pd.merge(left,right,on=['key1','key2'],how='left')print(res)print('-'*30)# 右链接res=pd.merge(left,right,on=['key1','key2'],how='right')print(res)key1 key2 A B C D0 K0 K0 A0 B0 C0 D01 K1 K1 A1 B1 C1 D12 K2 K2 A2 B2 C2 D23 K3 K3 A3 B3 NaN NaN------------------------------ key1 key2 A B C D0 K0 K0 A0 B0 C0 D01 K1 K1 A1 B1 C1 D12 K2 K2 A2 B2 C2 D23 K3 K4 NaN NaN C3 D3
join 拼接列,主要用于索引上的合并
left = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3'], 'key': ['K0', 'K1', 'K0', 'K1']})right = pd.DataFrame({'C': ['C0', 'C1'], 'D': ['D0', 'D1']}, index=['K0', 'K1'])print(left)print('-'*15)print(right)A B key0 A0 B0 K01 A1 B1 K12 A2 B2 K03 A3 B3 K1--------------- C DK0 C0 D0K1 C1 D1
res=left.join(right,on='key')print(res)
A B key C D0 A0 B0 K0 C0 D01 A1 B1 K1 C1 D12 A2 B2 K0 C0 D03 A3 B3 K1 C1 D1
Pandas数据透视表
df = pd.DataFrame({'Month': ["January", "January", "January", "January", "February", "February", "February", "February", "March", "March", "March", "March"], 'Category': ["Transportation", "Grocery", "Household", "Entertainment", "Transportation", "Grocery", "Household", "Entertainment", "Transportation", "Grocery", "Household", "Entertainment"], 'Amount': [74., 235., 175., 100., 115., 240., 225., 125., 90., 260., 200., 120.]})print(df)Month Category Amount0 January Transportation 74.01 January Grocery 235.02 January Household 175.03 January Entertainment 100.04 February Transportation 115.05 February Grocery 240.06 February Household 225.07 February Entertainment 125.08 March Transportation 90.09 March Grocery 260.010 March Household 200.011 March Entertainment 120.0
# 构造一个索引为Category 列为Month 值为Amount的表res=df.pivot(index='Category',columns='Month',values='Amount')print(res)
Month February January MarchCategory Entertainment 125.0 100.0 120.0Grocery 240.0 235.0 260.0Household 225.0 175.0 200.0Transportation 115.0 74.0 90.0
# 按列求和res.sum(axis=0)
MonthFebruary 705.0January 584.0March 670.0dtype: float64
# 按行求和res.sum(axis=1)
CategoryEntertainment 345.0Grocery 735.0Household 600.0Transportation 279.0dtype: float64
pivot_table
df=pd.read_csv('./pandas/data/titanic.csv')df.columnsIndex(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'], dtype='object')
#默认求平均值res=df.pivot_table(index='Sex',columns='Pclass',values='Fare')print(res)
Pclass 1 2 3Sex female 106.125798 21.970121 16.118810male 67.226127 19.741782 12.661633
# 求最大值res=df.pivot_table(index='Sex',columns='Pclass',values='Fare',aggfunc='max')print(res)
Pclass 1 2 3Sex female 512.3292 65.0 69.55male 512.3292 73.5 69.55
# 统计个数res=df.pivot_table(index='Sex',columns='Pclass',values='Fare',aggfunc='count')print(res)print('-'*20)# crosstab 统计个数res=pd.crosstab(index=df['Sex'],columns=df['Pclass'])print(res)Pclass 1 2 3Sex female 94 76 144male 122 108 347--------------------Pclass 1 2 3Sex female 94 76 144male 122 108 347
# 求平均值res=df.pivot_table(index='Sex',columns='Pclass',values='Fare',aggfunc='mean')print(res)
Pclass 1 2 3Sex female 106.125798 21.970121 16.118810male 67.226127 19.741782 12.661633
# 计算未成年男女存活率df['minor']=df['Age']<=18res=df.pivot_table(index='minor',columns='Sex',values='Survived',aggfunc='mean')print(res)
Sex female maleminor False 0.760163 0.167984True 0.676471 0.338028
以上是"Pandas中merge如何合并DataFrame"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
数据
篇文章
个数
内容
平均值
索引
链接
统计
最大
不怎么
交集
大部分
存活率
更多
最大值
未成年
男女
知识
行业
资讯
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库如何存储二维码
深圳工业软件开发哪家正规
成都对日软件开发工程师
方舟服务器显示玩家数量不一样
管理服务器是堡垒机吗
网络安全岗位的日常工作
数据库技术与应用免费下载
深圳服务器系统集成多少钱
什么是主机网络安全
关注网络安全的小儿歌
数据库修改用户quota
dtcc 数据库技术大会
前端和软件开发哪个好就业
街机游戏联网服务器端
nosql数据库的新数据模型
空间数据库中空间组织的定义
数据库之数据类型
polardb数据库启动
数据库删除违法吗
异构数据库迁移问题
管理服务器是堡垒机吗
五指山戎麓网络技术有限公司
快点说软件开发
五种网络安全问题
卧室效果图软件开发
深化网络安全思想认识
汽车通信网络技术
合肥ios软件开发培训
我的世界服务器新人礼物指令
上海紫山互联网科技有限公司