Pandas 根据特定列合并两个DataFrame

根据gene列和alert列来合并两个数据框(DataFrame)A和B。其中A表中的genealert列是唯一的,而B表中的genealert列不唯一:

import pandas as pd  
  
# 假设我们有两个数据框A和B  
A = pd.DataFrame({  
    'gene': ['gene1', 'gene2', 'gene3'],  
    'alert': ['alert1', 'alert2', 'alert3'],  
    'value_A': [10, 20, 30]  
})  
  
B = pd.DataFrame({  
    'gene': ['gene1', 'gene1', 'gene2', 'gene3', 'gene3'],  
    'alert': ['alert1', 'alert1', 'alert2', 'alert3', 'alert3'],  
    'value_B': [1, 2, 3, 4, 5]  
})  
  
# 使用merge函数来合并数据框,how='left'表示保留A表的所有行  
# 并将匹配的B表的行添加到结果中  
result = pd.merge(A, B, on=['gene', 'alert'], how='left')  
  
print(result)

这段代码会输出一个新的dataframe,其中包含了A表的所有行,以及与之匹配的B表的行。

如果B表中有多个与A表中的某一行匹配的行,那么这些行都会在结果中出现。

输出:

    gene   alert  value_A  value_B
0  gene1  alert1       10        1
1  gene1  alert1       10        2
2  gene2  alert2       20        3
3  gene3  alert3       30        4
4  gene3  alert3       30        5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值