2016-12-22 62 views
2

當我合併兩個簡單的數據框時,一切正常。但是,當我將相同的代碼應用於我的真實數據幀時,合併無法正常工作:左側合併不起作用

我想合併df1df2,使用左連接列A

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 
        'B': ['B0', 'B1', 'B2', 'B3']}) 

df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3','A4','A5'], 
        'C': ['C0', 'C1', 'C2', 'C3','C4','C5'], 
        'D': ['D0', 'D1', 'D2', 'D3','D4','A5']}) 

result = pd.merge(df1, df2[["A","C"]], how='left', on='A') 

在這種情況下,結果是正確的(行中result數目是一樣的df1)。

但是,當我在我的實際數據上運行相同的代碼時,result中的行數遠遠大於df1,與df2更相似。

result = pd.merge(df1, df2[["ID","EVENT"]], how='left', on='ID') 

字段ID是String類型(astype(str))的。

這可能是什麼原因?我不能在這裏發佈真正的數據集,但也許一些跡象仍然可以根據我的解釋完成。謝謝。

UDPATE:

我檢查數據幀result,我可以看到具有相同ID許多重複的行。爲什麼?

+0

也許你在df1或df2中有dup ID – steboc

回答

1

看這個略微變形例(I修改的最後兩個值Adf2):

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 
        'B': ['B0', 'B1', 'B2', 'B3']}) 

df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3','A0','A0'], 
        'C': ['C0', 'C1', 'C2', 'C3','C4','C5'], 
        'D': ['D0', 'D1', 'D2', 'D3','D4','A5']}) 

result = pd.merge(df1, df2[["A","C"]], how='left', on='A') 

輸出:

A B C 
0 A0 B0 C0 
1 A0 B0 C4 
2 A0 B0 C5 
3 A1 B1 C1 
4 A2 B2 C2 
5 A3 B3 C3 

有用於df2A0一個A0行。這也是您的數據所發生的情況。

+0

謝謝。這是問題的原因。 – Dinosaurius