如何使用列作为键来连接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
答案 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