2017-07-11 19 views
0

私は.csvファイルを先頭行と1列目に、残りのデータは浮動小数点数として文字列にしています。私は最初の行と列をそれぞれ列名とインデックス、およびすべての浮動小数点値をfloat64としてデータフレームに読み込みたいと思います。csvファイルをpandasデータフレームにfloatとして読み込み

df = pd.read_csv(filename,index_col=0)を使用すると、すべての数値が文字列として残ります。

df = pd.read_csv(filename, index_col=0, dtype=np.float64)を使用した場合、最初の列をfloatとして解析しようとすると、ValueError: could not convert string to floatという例外が発生します。

多くの列があり、私は列名を持たないので、解析する各列をfloatと識別したくない。私は以外のすべての列を解析したいのですが、最初のものを除きます。

+1

数字の形式は?私はパンダがどんな議論もなしにdtypesを推論すると確信しています。あなたはそれを試しましたか?結果は何でしたか? –

+0

私はいくつかの例のデータを掲載します.... – doctorer

+0

'df.convert_objects(convert_numeric = True)'あなたはdataFrameを持っている後に値を変換することができます。 –

答えて

0

元のコードは

df = pd.read_csv(filename,index_col=0) 

正しかったが、.csvファイルが正しく構築されていました。

@ juanpa.arrivillagaが指摘したように、pandasは、列内のすべてのデータが同じdtypeであれば、引数なしでdtypesを推論します。 のほとんどがのデータであったものの、1行に非数値データ(実際には日付)が含まれていたため、列は文字列として解釈されていました。 .csvからこの行を削除すると問題が解決しました。

0

すべての列名のリストを取得し、最初の列名を削除します。他の列をキャストします。

cols = df.columns 
cols.remove('fistcolumn') 
for col in cols: 
    df[col] = df[col].astype(float) 
関連する問題