說我要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