如何使用2列作为键来连接数据帧?

时间:2017-10-20 15:10:40

标签: python dataframe concatenation

如何使用列作为键来连接pandas,就像我们在sql中一样?

DF1

col1 col2 
a1   b1  
a2   b2   
a3   b3
a4   b4  

DF2

col3 col4
a1     d1
a2     d3
a3     d3

我想在col1 = col3上合并/连接它们,而不删除不在col3中但在col1中的记录。类似于sql中的左连接。

DF

col1 col2 col4
a1   b1     d1
a2   b2     d2
a3   b3     d3
a4   b4     NA

1 个答案:

答案 0 :(得分:0)

以下是否适合您:

df1 = pd.DataFrame(
    [
        ['a1', 'b1'],
        ['a2', 'b2'],
        ['a3', 'b3'],
        ['a4', 'b4']
    ],
    columns=['col1', 'col2']
)

df2 = pd.DataFrame(
    [
        ['a1', 'd1'],
        ['a2', 'd2'],
        ['a3', 'd3']
    ],
    columns=['col3', 'col4']
)

df1 = df1.set_index('col1')
df2 = df2.set_index('col3')

dd = df2[df2.index.isin(df1.index)]
# dd.index.names = ['col1']

df = pd.concat([df1, dd], axis=1).reset_index().rename(columns={'index': 'col1'})

# Output
    col1 col2   col4
0   a1   b1     d1
1   a2   b2     d2
2   a3   b3     d3
3   a4   b4     NaN