2017-04-25 54 views
1

我想獲得一個數據框形式的列浮動到字符串。我曾嘗試如何在Julia中將列數據類型從float更改爲string?

df = readtable("data.csv", coltypes = {String, String, String, String, String, Float64, Float64, String}); 

但還是抱怨

syntax: { } vector syntax is discontinued 

我也試過

dfB[:serial] = string(dfB[:serial]) 

,但它也不能工作。所以,我想知道在Julia中更改列數據類型的正確方法是什麼。

THX

回答

3

在你的第一次嘗試,朱莉婭告訴你問題是什麼 - 你不能讓一個向量與{},你需要使用[]。此外,關鍵字參數的名稱應該是eltypes而不是coltypes

第二次嘗試,你沒有浮動,你有一個浮動向量。因此,要更改類型,您需要更改所有元素的類型。在Julia中,向量上的元素操作通過'點'語法來概括,例如, string.(collect(dfB[:serial]))。當前需要collect才能將DataArray首先轉換爲正常的數組 - 如果DataArray包含NA,則這將失敗。恕我直言,DataFrames接口仍然相當不可靠,所以期待像這種ATM這樣的一些令人頭疼的事情。

+0

謝謝你的回答。不幸的是,他們都不適合我的情況。第一個提出的解決方案引發了「MethodError:沒有匹配可讀表的方法(:: String; coltypes = DataType [String,String,String,String,String,Float64,Float64,String])」,第二個顯示「MethodError:Can not'convert '一個String類型的對象到一個Int64類型的對象 這可能是由於調用構造函數Int64(...), 而產生的,因爲類型構造函數返回轉換方法。「任何想法爲什麼? – bensw

+0

'string。(x)'調用絕對不應該引發這個異常。似乎你想從'String'轉換爲'Int',而不是相反。你能顯示你跑過的代碼嗎?也許是一個演示數據集? – niczky12

+0

確實會導致該錯誤,對不起。這很奇怪。 目前的解決方法是'string。(collect(df [:serial]))',它在轉換爲String之前將DataArray轉換爲Array。 –

相關問題