栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pandas将两个dataframe合并_Python dataframe合并?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pandas将两个dataframe合并_Python dataframe合并?

本文摘要:

Pandas的merge相当于SQL的join,将不同的表按共有的列属性关联起来。

merge实例

现有数据 df_ratings 如下

df_users 如下

df_movies 如下

how=‘innder’ 内连接,表示两表都有同一UserID才会保留,否则丢弃。

import pandas as pd
df_ratings_users = pd.merge(
	df_ratings, df_users, left_on='UserID', right_on='UserID', how='inner'
)

返回结果

df_ratings_users_movies = pd.merge(
	df_ratings_users, df_movies, left_on='MovieID', right_on='MovieID', how='inner'
)
merge时数量关系


一对一关系:

# one-to-one
left = pd.Dataframe({
	'sno': [11,12,13,14],
	'name': ['name_a','name_b','name_c','name_d']
})

right = pd.Dataframe({
	'sno': [11,12,13,14],
	'age': [11,12,13,14]
})

pd.merge(left, right, on='sno')

一对多关系:

# one-to-many
pd.merge(left, right, on='sno')

返回结果

多对多关系:

# many-to-many
pd.merge(left, right, on='sno')

返回结果

left join、right join、inner join、outer join的区别


下面指的都是Key,交集指该Key列的值两表都存在。
Left join:保留完整的左表 和 交集
Right join:保留完整的右表 和 交集
Inner join:只保留交集
Full Outer join:全保留

下面演示一下

left = pd.Dataframe({
	'key': ['K0', 'K1', 'K2', 'K3'],
	'A': ['A0', 'A1', 'A2', 'A3'],
	'B': ['B0', 'B1', 'B2', 'B3']
})

right = pd.Dataframe({
	'key': ['K0', 'K1', 'K4', 'K5'],
	'C': ['C0', 'C1', 'C4', 'C5'],
	'D': ['D0', 'D1', 'D4', 'D5']
})

inner join:

pd.merge(left, right, how='inner')

两表共有的只有K0,K1,所以inner join只保留了这两行

left join:

pd.merge(left, right, how='left')

保留左表所有Key,K2、K3没有C、D列所以为NaN

right join:

pd.merge(left, right, how='right')

保留右表所有Key,K4、K5没有A、B列所以为NaN

outer join:

pd.merge(left, right, how='outer')

保留两表所有Key,没有对应的列则为NaN

*此文仅为个人笔记

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/786744.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号