1.Python高频函数—数据合并merge()

这篇具有很好参考价值的文章主要介绍了1.Python高频函数—数据合并merge()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

数据处理中经常对多个表的数据进行合并处理,python 提供两个十分好用的函数处理。merge() 、 concat()

merger函数是Python里的数据分析工作中最常见的函数之一,主要应用场景是:针对同一个主键存在两张不同字段的表。(这里强调只能用于2张表的合并)

merge函数

简要的罗列函数的构成和参数的介绍

pd.merge(left: 'DataFrame | Series',  			# 参与合并的左侧DataFrame对象。
    right: 'DataFrame | Series',			# 参与合并的右侧DataFrame对象。
    how: 'str' = 'inner',  				# 要执行的连接方式,可选{'left','right','outer','inner','cross'},默认为'inner'。
    on: 'IndexLabel | None' = None,  			# 用于连接的列索引名称(即列标签名),该键必须存在于左右两个DataFrame中。若没有指定,则以列名的交集作为连接键。
    left_on: 'IndexLabel | None' = None,		# 指定左侧DataFrame中用于连接键的列名。
    right_on: 'IndexLabel | None' = None,  		# 指定右侧DataFrame中用于连接键的列名。
    left_index: 'bool' = False,				# 使用左侧DataFrame中的行索引作为连接键;
    right_index: 'bool' = False,  			# 使用右侧DataFrame中的行索引作为连接键;
    sort: 'bool' = False,  				# DataFrame对象结果中,按词典顺序排序,默认False。
    suffixes: 'Suffixes' = ('_x', '_y'),  		# 指定左右DataFrame存在相同列名时,为其添加后缀。
    copy: 'bool' = True,
    indicator: 'bool' = False,  			# 输出结果中添加_merge列,表明每一行使用的左右键来源情况。
    validate: 'str | None' = None 			# 验证连接键在左侧、右侧或两侧是否唯一,即'1:1','1:m','m:1'。
)

函数应用示例

首先我有两张表,如下: 第一张表包含了:位点的位置信息、基因、外显子

panel_data = pd.read_csv("panel.bed", sep="\t")
panel.bed:
Chrom	Start	End	Gene	Exon
chr1	115252169	115252369	NRAS	exon4
chr1	115256380	115256619	NRAS	exon3
chr1	115258644	115258814	NRAS	exon2

第二张表包含了:位点的位置信息、基因、转录本、染色臂

panel_exp_data = pd.read_csv("panel_exp.bed", sep="\t")

panel_exp.bed:
Chrom	Start	End	Gene	Transcript	CytoBand
chr1	115252169	115252369	NRAS	NM_002524.4	chr1:p13.2
chr1	115256380	115256619	NRAS	NM_002524.4	chr1:p13.2
chr1	115256882	115256919	NRAS	NM_002524.4	chr1:p13.2
chr2	29432621	29432778	ALK	NM_004304.4	chr2:p23.2

需求:根据位点的位置信息, 将两个表合并。

最简单当然直接用默认值

默认值没有指定连接的列索引名称,以列名的交集作为连接键。两个表共同的键["Chrom", "Start", "End", ”Gene“]

data_meg = pd.merge(panel_data, panel_exp_data)
print(data_meg)

output:
    Chrom      Start        End Gene   Exon   Transcript    CytoBand
0  chr1  115252169  115252369   NRAS  exon4  NM_002524.4  chr1:p13.2
1  chr1  115256380  115256619   NRAS  exon3  NM_002524.4  chr1:p13.2

参数on

指定用于连接的列索引名称(即列标签名),该键必须存在于左右两个DataFrame中。若没有指定,则以列名的交集作为连接键。比如:on=["Chrom", "Start", "End"]

data_meg = pd.merge(panel_data, panel_exp_data, on=["Chrom",    "Start",   "End"])
print(data_meg)

output:
    Chrom      Start        End Gene_x   Exon Gene_y   Transcript    CytoBand
0  chr1  115252169  115252369   NRAS  exon4   NRAS  NM_002524.4  chr1:p13.2
1  chr1  115256380  115256619   NRAS  exon3   NRAS  NM_002524.4  chr1:p13.2

参数 how

指定要执行的连接方式,inner : 使用左右侧frame的键的交集;简单说,只输出两个表中共同有位点信息。

# how: 'str' = 'inner',
data_meg = pd.merge(panel_data, panel_exp_data)
data_meg_inner = pd.merge(panel_data, panel_exp_data,how='inner')
print(data_meg_inner)

output:
    Chrom      Start        End  Gene   Exon   Transcript    CytoBand
0  chr1  115252169  115252369  NRAS  exon4  NM_002524.4  chr1:p13.2
1  chr1  115256380  115256619  NRAS  exon3  NM_002524.4  chr1:p13.2

参数 left_on,right_on

当左右两个frame的连接键的名字相同时,可以直接用参数‘on’。左侧frame键名为大写,,右侧frame键名是小写,名字不一样但其内容实质相同。此时就用left_on和right_on参数以替代参数on。

data_meg_inner = pd.merge(panel_data, panel_exp_data,how='inner', left_on=['Chrom', 'Start', 'End'], right_on=['chrom', 'start', 'end'])
print(data_meg_inner)

output:
    Chrom      Start        End Gene_x   Exon chrom      start        end Gene_y   Transcript    CytoBand
0  chr1  115252169  115252369   NRAS  exon4  chr1  115252169  115252369   NRAS  NM_002524.4  chr1:p13.2
1  chr1  115256380  115256619   NRAS  exon3  chr1  115256380  115256619   NRAS  NM_002524.4  chr1:p13.2

参数suffixes

当左右frame存在相同列名时(比如Gene),通过该参数为其添加后缀。_x和_y是默认后缀

data_meg_inner = pd.merge(panel_data, panel_exp_data,how='inner', left_on=['Chrom', 'Start', 'End'], right_on=['chrom', 'start', 'end'], suffixes=('_panel', '_panel_exp'))
print(data_meg_inner)

output:
    Chrom      Start        End Gene_panel   Exon chrom      start        end Gene_panel_exp   Transcript    CytoBand
0  chr1  115252169  115252369       NRAS  exon4  chr1  115252169  115252369           NRAS  NM_002524.4  chr1:p13.2
1  chr1  115256380  115256619       NRAS  exon3  chr1  115256380  115256619           NRAS  NM_002524.4  chr1:p13.2

更多完整内容阅读原文:1.Python高频函数—数据合并merge() https://mp.weixin.qq.com/s/ezatpufJPeMwd8s8vqcXCw文章来源地址https://www.toymoban.com/news/detail-706482.html

到了这里,关于1.Python高频函数—数据合并merge()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包