Python 将dataframe合并到dataframe列表,排除合并中与列表中的prevoius表成功匹配的行

Python 将dataframe合并到dataframe列表,排除合并中与列表中的prevoius表成功匹配的行,python,pandas,Python,Pandas,我有一个主数据框,其中有列['UniqueID','Col1','Col2] 我还有一个数据帧列表[Table1,Table2,Table3],列表中的每个数据帧只包含相同的两列:['UniqueID','JoinID']。JoinID列被设置为表的值,这样一旦它们合并回主数据帧,我就知道它们是从哪个表加入的。例如: masterDF = {'UniqueID': ['A1','A2','A3','A4','A5','A6'],'Col1':['a','b','c','d','e','f'],'

我有一个主数据框,其中有列['UniqueID','Col1','Col2]

我还有一个数据帧列表
[Table1,Table2,Table3]
,列表中的每个数据帧只包含相同的两列:
['UniqueID','JoinID']
。JoinID列被设置为表的值,这样一旦它们合并回主数据帧,我就知道它们是从哪个表加入的。例如:

masterDF = {'UniqueID': ['A1','A2','A3','A4','A5','A6'],'Col1':['a','b','c','d','e','f'],'Col2':['a','b','c','d','e','f']}

table1 = {'UniqueID': ['A1','A2','A3'],'JoinID': ['Table1', 'Table1','Table1'] }
table2 = {'UniqueID': ['A1','A3','A4'],'JoinID': ['Table2', 'Table2','Table2'] }
table3 = {'UniqueID': ['A3','A4','A5'],'JoinID': ['Table3', 'Table3','Table3']}
我想做的是按照特定的顺序遍历列表,并将masterDF连接到每个表,但是,如果一行以前与列表中的一个表匹配,从而不将其包含在连接中。例如,合并的预期输出为:

    for table in tables:
        (merge each table, omitting rows which have already joined to a previous table)
    output = {'UniqueID': ['A1','A2','A3','A4','A5','A6'], 'Col1':['a','b','c','d','e','f'], 
'Col2':['a','b','c','d','e','f'], 'JoinID':['Table1','Table1','Table1','Table2','Table3',nan]}
我也理解merge可能不是最好的连接方法,因为它会导致'JoinID'列在每次连接后都加上后缀'JoinID_x'和'JoinID_y'


是否有一种简洁且相对有效的方法来实现这一点?

这是一种使用+

输出

print(output)
  UniqueID Col1 Col2  JoinID
0       A1    a    a  Table1
1       A2    b    b  Table1
2       A3    c    c  Table1
3       A4    d    d  Table2
4       A5    e    e  Table3
5       A6    f    f     NaN
print(output)
  UniqueID Col1 Col2  JoinID
0       A1    a    a  Table1
1       A2    b    b  Table1
2       A3    c    c  Table1
3       A4    d    d  Table2
4       A5    e    e  Table3
5       A6    f    f     NaN