2017-04-25 28 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

あなたの最初の試みで、ジュリアは、問題が何であるかがわかります - あなたは{}とベクトルを作ることができない、あなたは[]を使用する必要があります。また、キーワード引数の名前は、coltypesではなく、eltypesである必要があります。

2回目の試行では浮動小数点数を持たず、浮動小数点数のベクトルがあります。したがって、タイプを変更するには、すべての要素のタイプを変更する必要があります。 Juliaでは、ベクトルに対する要素単位演算は 'dot'構文で一般化されます。 string.(collect(dfB[:serial]))collectは、DataArrayを通常の配列に最初にキャストする必要があります。これは、DataArrayにNAsが含まれていると失敗します。 IMHO DataFramesのインターフェースはまだまだ不安定なので、このATMのような頭痛を覚悟してください。

+0

ありがとうございます。残念ながら、どちらも私の場合は動作しません。最初の提案されたソリューションは、 "MethodError:readtable(:: String; coltypes = DataType [String、String、String、String、String、Float64、Float64、String])に一致するメソッドがありませんでした。"そして2番目のメソッドは "MethodError:Can not ' 'Int64型のオブジェクトへのString型オブジェクト これは、型コンストラクタがメソッドを変換するために戻ってくるので、コンストラクタInt64(...)、 を呼び出すと発生する可能性があります。"どんな考え? – bensw

+0

'string(x)'コールは、その例外を発生させてはいけません。あなたは 'String'から' Int'に変換しようとしているように見えますが、それ以外の方法はありません。実行したコードを表示できますか?たぶんデモデータセットですか? – niczky12

+0

このエラーが発生します。申し訳ありません。それは変だ。 回避策は現在、Stringに変換する前にDataArrayをArrayに変換する 'string(collect(df [:serial]))'です。 –

関連する問題