假设我要在特定列上加入一个比另一个更长的DataFrame,如下例所示:
A = pd.DataFrame({'col1': [1, 2, 3, 4, 5], 'col2': [6, 7, 8, 9, 10], 'col3': [11, 12, 13, 14, 15]})
B = pd.DataFrame({'col1': [1, 3, 5], 'col2': [16, 17, 18], 'col4': [19, 20, 21]})
然后我加入他们:
pd.merge(A, B, on='col1', how='outer')
按预期得到:
col1 col2_x col3 col2_y col4
0 1 6 11 16 19
1 2 7 12 NaN NaN
2 3 8 13 17 20
3 4 9 14 NaN NaN
4 5 10 15 18 21
5 rows × 5 columns
但是,我有两个DataFrame正在尝试合并,分别有28,011和15,676行。以与上面相同的方式合并它们,我希望在df2没有观察的那些单元格中返回具有28,011行和NaN的DataFrame。相反的是:
len(pd.merge(df1, df2, on='col1', how='outer'))
51881
这怎么可能?我正在合并的列是一个唯一的标识符,同样的操作在Stata中没有问题。我在这里缺少什么?
答案 0 :(得分:2)
听起来你想要一个左连接。
尝试:
pd.merge(df1, df2, left_on='col1',right_on='col1',how='left')