Python 熊猫壳外部连接不';我不能正常工作

Python 熊猫壳外部连接不';我不能正常工作,python,pandas,Python,Pandas,我正在尝试加入2个数据帧。我将在下面解释如何使用我的代码。我很抱歉,因为我不知道如何显示表输出,所以请运行代码,您就会明白我的意思 设置: df1 = pd.DataFrame({'A': ['A2', 'A3', 'A6', 'A7'], 'B': ['B2', 'B3', 'B6', 'B7'], 'C': ['C2', 'C3', 'C6', 'C7']}) df2 = pd.DataFrame({'A_'

我正在尝试加入2个数据帧。我将在下面解释如何使用我的代码。我很抱歉,因为我不知道如何显示表输出,所以请运行代码,您就会明白我的意思

设置:

df1 = pd.DataFrame({'A': ['A2', 'A3', 'A6', 'A7'],
                    'B': ['B2', 'B3', 'B6', 'B7'],
                    'C': ['C2', 'C3', 'C6', 'C7']})


df2 = pd.DataFrame({'A_': ['A2', 'A3', 'A4'],
                    'B_': ['B2', 'B3', 'B4'],
                    'C_': ['C2', 'C3', 'C4']})

我尝试了以下方法:

new_joined = pd.concat([df1, df2],axis=1,join='outer')
输出不是我想要的。我想要的是这样一个连接的df:

joined = pd.DataFrame({'A': ['A2', 'A3', 'A6', 'Nan','A7'],
                    'B': ['B2', 'B3', 'B6','Nan','B7'],
                    'C': ['C2', 'C3', 'C6','Nan','C7'],
                   'A_': ['A2', 'A3', 'Nan','A4','Nan'],
                   'B_': ['B2', 'B3', 'Nan','B4','Nan'],
                   'C_': ['C2', 'C3', 'Nan','C4','Nan']})
joined = joined[['A','B','C','A_','B_','C_']]

基本上,如果一行df1与另一行df2不匹配,我希望它是Nan,但我尝试的函数只是将[A6,B6,C6]和[A4,B4,C4]放在同一行上。请告知

pd.concat不起作用,因为它在索引(行或列)上对齐,而不是在任意列上对齐。您可能正在查看表单
merge

df1.merge(df2,left_on=['A','B','C'],right_on=['A_','B_','C_'],how='outer')

我认为这与我的工作有关。你在找一个新的工作。根据您的示例,以下是解决方案:

df1 = pd.DataFrame({'A': ['A2', 'A3', 'A6', 'A7'],
                    'B': ['B2', 'B3', 'B6', 'B7'],
                    'C': ['C2', 'C3', 'C6', 'C7']})


df2 = pd.DataFrame({'A_': ['A2', 'A3', 'A4'],
                    'B_': ['B2', 'B3', 'B4'],
                    'C_': ['C2', 'C3', 'C4']})

df1.merge(df2, how='outer', left_on=list(df1.columns), right_on=list(df2.columns))

哪个输出

     A    B    C   A_   B_   C_
0   A2   B2   C2   A2   B2   C2
1   A3   B3   C3   A3   B3   C3
2   A6   B6   C6  NaN  NaN  NaN
3   A7   B7   C7  NaN  NaN  NaN
4  NaN  NaN  NaN   A4   B4   C4