Pandas:合并后DataFrame太长了

时间:2014-10-09 16:38:01

标签: python pandas merge

假设我要在特定列上加入一个比另一个更长的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中没有问题。我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

听起来你想要一个左连接。

尝试:

pd.merge(df1, df2, left_on='col1',right_on='col1',how='left')