lsq546397641的个人博客分享 http://blog.sciencenet.cn/u/lsq546397641

博文

pandas数据合并pd.merge

已有 1105 次阅读 2023-7-8 19:08 |系统分类:科研笔记

模拟数据:

df1 = pd.DataFrame({'Name':['Raju', 'John', 'Geeta', 'Sita', 'Sohit'],

                    'Marks':[80, 90, 75, 88, 59],

                    'Grade':['B', 'A', 'A', 'A', 'A']})

df2 = pd.DataFrame({'Name':['Raju', 'Divya', 'Geeta', 'Sita'],

                    'Rank':[3, 1, 4, 2 ],

                    'Gender':['Male', 'Female', 'Female', 'Female']})

image.png

参数how=

左连接是保留所有左表的信息,把右表主键与左表一致的信息拼接进来,标签不能对齐的部分,用NAN进行填充<无右表的Divya>

df = pd.merge(df1, df2[['Name','Gender']], on='Name', how='left')

image.png

外连接是保留两个表的所有信息,拼接的时候遇到标签不能对齐的部分,用NAN进行填充

df = pd.merge(df1, df2[['Name','Gender']], on='Name', how='outer')

image.png

右连接是保留所有右表的信息,把左表中主键与左表一致的信息拼接进来,标签不能对齐的部分,用NAN进行填充。

df = pd.merge(df1, df2[['Name','Gender']], on='Name', how='right')

image.png


参数suffixes=

如果两个表中有相同的列名,除了作为主键的列之外,其他相同的列被拼接到表中的时候会有一个后缀表示这个列来自于哪个表格,用于区分名字相同的列,这个后缀默认是(_x_y),例如这个拼接的结果,能看到Name作为主键,拼接后的表里有两个Grade列,后边会增加后缀

df = pd.merge(df1, df2[['Name','Grade']], on='Name', how='left')

image.png

后缀是可以自定义的,控制它的参数就是suffixes,将后缀改成了(_L_R

df = pd.merge(df1, df2[['Name','Grade']], on='Name', how='left',suffixes=('_L','_R'))

image.png


参数indicator=

通过indicator参数设置,默认是False不显示数据来源,把参数设置为True显示拼接后的表中信息来自于哪个表格

df = pd.merge(df1, df2[['Name','Gender']], on='Name', how='left',indicator=True)

image.png

注意:

如果df内有重复数据,合并之后的结果也有会重复的数据。

image.png



https://m.sciencenet.cn/blog-994715-1394596.html

上一篇:pandas中阶实战
下一篇:R和Rstudio安装说明

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-27 15:42

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部