合并一列和两列子集上的两个数据框

问题描述 投票:0回答:1

这个问题看起来很简单,但我很难回答。想法是合并一个公共列和另一个列或另一个列。我提供一个假例子供您理解:

data = {
    'From': ['1-1-2024', '2-2-2024'],
    'To': ['11-2-2024', '1-1-9999'],
    'A': ['XX', 'XX'],
    'B': ['YY', 'ZZ']
}
a = pd.DataFrame(data)
data_2 = {
    'From': ['1-1-2024', '16-1-2024'],
    'To': ['15-1-2024', '1-1-9999'],
    'A': ['XX', 'XX'],
    'C': ['LL', 'OO']
}
b = pd.DataFrame(data_2)

data_3 = {
    'From': ['1-1-2024', '16-1-2024', '2-2-2024'],
    'To': ['15-1-2024', '1-2-2024', '1-1-9999'],
    'A': ['XX', 'XX', 'XX'],
    'B': ['YY', 'YY', 'ZZ'],
    'C': ['LL', 'OO', 'OO']
}
c = pd.DataFrame(data_3)
c

目标是将 a 和 b 与 pandas 合并以获得 c 非常感谢您的帮助

尝试了很多各种合并和连接逻辑,但没有任何好的结果

python pandas merge
1个回答
1
投票

确切的逻辑尚不完全清楚,但您可以执行两个单独的

merge
concat

out = pd.concat([a.merge(b.drop(columns='To'), on=['From', 'A']),
                 a.merge(b.drop(columns='From'), on=['To', 'A'])],
               ignore_index=True)

输出:

       From         To   A   B   C
0  1-1-2024  11-2-2024  XX  YY  LL
1  2-2-2024   1-1-9999  XX  ZZ  OO
© www.soinside.com 2019 - 2024. All rights reserved.