logo
Loading...

cannot convert the series to <class 'float'>問題 - Cupoy

請問如果要調整經度,卻不想要統一乘0.75756,想要乘cos(df['pickup_latitud...

ml100-2-d26,ml100-2

cannot convert the series to <class 'float'>問題

2019/05/26 下午 05:10
機器學習共學討論版
黃中鈺
觀看數:83
回答數:3
收藏數:0
ml100-2-d26
ml100-2

請問如果要調整經度,卻不想要統一乘0.75756,想要乘cos(df['pickup_latitude'])卻報錯,cannot convert the series to <class 'float'> 用了 to_numeric() / astype(float)都沒辦法把series改成float ,請問有什麼辦法?

感謝

回答列表

  • 2019/05/27 上午 02:57
    劉珍銘
    贊同數:1
    不贊同數:0
    留言數:0

    df['pickup_latitude'] 會回傳一個 Series 不是單一一個數字,而是一組數字

    math.cos 並不能直接對 Series (一組數字) 去做處理

    這時候要用 lamda 的寫法

    cos_pickup_latitude = df['pickup_latitude'].map(lambda x:math.cos(x))

    意思就是將 df['pickup_latitude'] 這個 series 裡面每一個數值 x 去做 cos(x) 的運算

    最後把所有運算後的值再組成一個 series

  • 2019/05/27 上午 10:21
    張維元 (WeiYuan)
    贊同數:2
    不贊同數:0
    留言數:0

    補充一下上面同學提到的,主要原因目前用的 cos  是 math.cos ,是對單一數值做運算的。或許可以改用 numpy 的 cos,是針對 series 的資料運算。 Ref: https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.cos.html

  • 2019/05/30 上午 01:27
    Seanyu.TW
    贊同數:0
    不贊同數:0
    留言數:0

    你可以選用 np.cos 或是 df["pickup_latitue"].apply(lambda x: math.cos(x)) 試看看。