2017-04-02 47 views
-1

我不明白爲什麼我得到一個錯誤,這行代碼:巨蟒-3錯誤:浮動需要

TEST_DATA:陣列,sqft_living:一列。

在我加入一個新列「log_sqft_living」它應該包含log'sqft_living」

test_data['log_sqft_living'] = log(test_data['sqft_living'][i] for i in range(len(test_data))) 

尋找類似的消息後行了,我發現答案,它應該是一個數字,這就是爲什麼我們必須使用float(x)來格式化,但是當我使用它時,錯誤變成了參數應該是一個字符串的數字。有人可以向我解釋爲什麼會出現這些錯誤嗎?

當我嘗試日誌(TEST_DATA [ 'sqft_living'] [1](對於單數)我沒有得到一個錯誤。

謝謝

+0

test_data是一個數組 – SarahData

+0

右括號的位置看起來不對。嘗試'log(test_data ['sqft_living'] [i])我在範圍內(len(test_data))' –

回答

1

你所申請的log功能的發電機,但只接受一個值的行更改列表理解(使它的顯式列表),移動log的理解裏面,這樣你將它應用到每一個元素:

test_data['log_sqft_living'] = [ log(test_data['sqft_living'][i]) for i in range(len(test_data)) ] 
1

<expression> for <variable> in <data set> - i上榜理解, 你可以閱讀更多關於列表理解這裏:http://treyhunner.com/2015/12/python-list-comprehensions-now-in-color/

這意味着什麼,但它產生的列表結構 - 在功能log期望得到一個數字。 math.log(x[, base])

你也許可以調整你的說法是這樣的: test_data['log_sqft_living'] = [log(test_data['sqft_living'][i]) for i in range(len(test_data))]

注: TEST_DATA [「log_sqft_living」]將包含這個例子
一個列表,你提供的有關背景和你沒有資料想實現我無法提供更好的解決方案