2017-07-28 43 views
0

我將DataFrame(df1)中的一列與另一個DataFrame(df2)合併,其中的兩個索引都相同。此操作的結果爲我提供了更多的行一式兩份)。有沒有一種方法,以避免重複?請看下面的例子代碼複製我的問題。使用「to_frame」合併大熊貓數據框無重複

df1 = pd.DataFrame([[1, 1.0, 2.3,0.2,0.53], [2, 3.35, 2.0,0.2,0.65], [2,3.4, 
        2.0,0.25,0.55]], 
        columns=["Sample_ID", "NaX", "NaU","OC","EC"])\ 
        .set_index('Sample_ID') 

df2 = pd.DataFrame([[1,0.2, 1.5, 82], [2, 3.35,2.4,92],[2, 3.4, 2.0,0.25]], 
       columns=["Sample_ID", "OC","Flow", "Diameter"])\ 
       .set_index('Sample_ID') 

df1 = pd.merge(df1,df2['Flow'].to_frame(), left_index=True,right_index=True) 

我的結果(見下文)有樣「2」開頭的3.35兩個條目,然後兩個條目爲「2」從3.40開始

我期待的僅僅是「2」的兩個條目,一個以3.35開頭,另一個以2.40開頭的「2」,因此th總行數應該只有三個,而現在我總共有五行數據。

你能看到這是什麼原因嗎?謝謝你的幫助!

 NaX NaU OC EC Flow 
Sample_ID     
    1 1.00 2.3 0.20 0.53 1.5 
    2 3.35 2.0 0.20 0.65 2.4 
    2 3.35 2.0 0.20 0.65 2.0 
    2 3.40 2.0 0.25 0.55 2.4 
    2 3.40 2.0 0.25 0.55 2.0 

回答

1

你想要做什麼是串連如下:

pd.concat([df1, df2['Flow'].to_frame()], axis=1) 

...返回所需輸出。 axis=1參數讓你「粘貼」多餘的列。至於爲什麼你的連接返回的次數是Sample_ID = 2的兩倍,你可以在read through the docs上加入。相關部分是:

在SQL /標準關係代數中,如果組合鍵在兩個表中出現不止一次,則結果表將具有關聯數據的笛卡爾乘積。

+0

謝謝,工作。 –