昨天看到輸出影片的年份顯示float 就覺得很奇怪覺得需要改掉。然而今天開始改的時候遇到一些坑 以此紀錄

上方的user 選取段由於我強制轉int 所以看不出端倪,但下方表格的title year就是廬山真面目了

1837069.png

起手勢astype 硬轉馬上遇到問題

1837059.png

1837062.png

看來有NAN是不能這樣處理的

天兵如我馬上想到一個好方法,

  1. 使用apply去檢查裡面每一個元素(x)是不是nan(np.isnan(x))
  2. 如果不是的話應該就是float ,幫我把float都轉換成int(x: int(x)),
  3. 如果是nan就回傳原本的(else x)

整段程式碼看起來像下面一樣

df[’title_year’] = df.title_year.fillna(na.nan).apply(lambda x:int(x) if not np.isnan(x) else x)

程式運作之後完美的失敗了,對阿,它有轉換,也沒有錯誤,但最後為什麼還是float

仔細想想,panda是建構在mpy上面的應用,所以pd.series 本質上是一個np.ndarray,array的特性就是內部全部的資料必須是同一個datatype, 而我們要保持nan存在的同時就注定了int這個型別無法存在。

1837069.png

最後一招就是參考遺失值處理的方法,認真看待這些遺失值

  1. drop掉這些資料(108筆)
  2. 自己上google這些電影的年份,把資料補回去