logo
Loading...

merage問題? - Cupoy

程式碼:df = pd.merge(df, temp, how='right',on=['Cabin...

ml100-3,ml100-3-d29

merage問題?

2019/10/11 上午 09:31
機器學習共學討論版
嚴詩豪
觀看數:32
回答數:2
收藏數:0
ml100-3
ml100-3-d29

程式碼:

df = pd.merge(df, temp, how='right',on=['Cabin'])

df = df.drop(['Cabin'] , axis=1)

df.head()

一直卡在這裡...我快瘋了

我只是要把df和temp合併起來啊...

df:


temp:

錯誤代碼:

回答列表

  • 2019/10/11 上午 11:25
    陳明佑 (Ming You Chen)
    贊同數:1
    不贊同數:0
    留言數:0

    同學不要心急, 

    以下提供兩個可能的方向你先試試看,  不行再來提問


    可能性1.

    你重複執行了這個區塊, 

    導致第二次以後 df 已經沒有 'Cabin' 這個欄位了, 因此出錯

    [解法] 

    每次修改後, 如果懷疑是這類資料問題

    都建議先按一下最上方的那顆按鍵 "restart the kernel (with dialog)"

    然後從第一格重新跑一遍

    這樣不僅左邊顯示的數字美觀, 可確保下次執行時有一樣的結果

    也可排除這類重覆執行的問題


    可能性2.

    由於以 'Cabin' 欄位來說, df 有重複值, 而temp沒有

    這時候你 merge 參數的 how='right', 意思是以 temp 的 index 為準

    這時候如果碰到 temp 某一格, 比如說 Cabin='C85' 的位置時

    由於 df 對應到 'C85' 的資料有兩個以上, 就會導致 merge 出現 Error

    [解法] 

    請改成 how='left' 就可以了, 

    建議可以閱讀一下官方文件或做些實驗, 

    了解一下 ‘left’, ‘right’, ‘outer’, ‘inner’ 這些的作用方式與差距

  • 2019/10/12 下午 09:56
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:0

    嗨, Key Error 是因為兩個 df 的欄位對不起來。你想要做的是「左右合併」還是「上下合併」?