You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中按org与dest包含匹配条件连接DataFrame

Python实现DataFrame的特殊匹配连接需求

我们需要将两个DataFrame(df1和df2)按照特定规则连接生成新的DataFrame df3:

  • 连接键包含org列,要求两表的org值完全匹配
  • 对于dest列,df1的dest值需存在于df2的dest列按/分割后的集合中(比如df2的dest为A/B/C,则df1的dest为A、B、C均符合匹配条件)

示例数据

df1数据:

Name    org   dest  
Ashok   A      B
Rahul   A      C
Anupa   B      A
Sam     A      B

df2数据:

org  dest   Amount
A       A/B/C   10
B       C       20
A       W       30

实现步骤

  • 先处理df2,把dest列按/分割后展开成多行,让每个拆分后的dest值对应原有的org和Amount:
    import pandas as pd
    
    # 构造示例数据
    df1 = pd.DataFrame({
        'Name': ['Ashok', 'Rahul', 'Anupa', 'Sam'],
        'org': ['A', 'A', 'B', 'A'],
        'dest': ['B', 'C', 'A', 'B']
    })
    
    df2 = pd.DataFrame({
        'org': ['A', 'B', 'A'],
        'dest': ['A/B/C', 'C', 'W'],
        'Amount': [10, 20, 30]
    })
    
    # 拆分df2的dest列并展开
    df2_expanded = df2.assign(dest=df2['dest'].str.split('/')).explode('dest')
    
    处理后的df2_expanded结构如下:
    org dest  Amount
    A   A       10
    A   B       10
    A   C       10
    B   C       20
    A   W       30
    
  • 使用merge方法将df1和处理后的df2_expanded按org和dest做左连接:
    df3 = df1.merge(df2_expanded, on=['org', 'dest'], how='left')
    
  • 若需要将结果中的NaN替换为空字符串,与期望输出完全一致,执行以下代码:
    df3['Amount'] = df3['Amount'].fillna('')
    

最终结果

处理后得到的df3如下:

Name org dest Amount
0  Ashok   A    B     10
1  Rahul   A    C     10
2  Anupa   B    A       
3    Sam   A    B     10

内容的提问来源于stack exchange,提问作者aeapen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 01:22:28