说我要DataFrames,比另一个更长的时间,我想加入一个特定的列,如下面的例子:熊猫:数据帧后过长合并
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
不过,我有两个DataFrames,我试图合并,W分别为28,011和15,676行。按照上面的方式合并它们,我期望在df2没有观察结果的那些单元格中返回一个带有28011行和NaN的DataFrame。会发生什么反而是:
len(pd.merge(df1, df2, on='col1', how='outer'))
51881
这怎么可能?我正在合并的列是一个唯一的标识符,并且在Stata中没有问题的情况下执行相同的操作。我在这里错过了什么?
听起来你想怎么'='left''?外连接还将包括df2中的观察值,df1中没有多少。另外,你可以仔细检查'col1'没有重复吗? – chrisb 2014-10-09 17:04:39