2017-02-17 11 views
0

私は単純なcsvファイルを読むためにpandas read_csvを使用します。しかし、なぜそれが私は理解していないValueError: could not convert string to float:があります。python pandas read_csv 1000セパレータが機能しません

コードは単に

rawdata = pd.read_csv(r'Journal_input.csv' , 
         dtype = { 'Base Amount' : 'float64' } , 
         thousands = ',' , 
         decimal = '.', 
         encoding = 'ISO-8859-1') 

あるしかし、私は浮いて'79、026,695.50' の文字列を変換するときにどのようにそれは可能性のあるエラーを取得することができます

pandas\parser.pyx in pandas.parser.TextReader.read (pandas\parser.c:10415)()

pandas\parser.pyx in pandas.parser.TextReader._read_low_memory (pandas\parser.c:10691)()

pandas\parser.pyx in pandas.parser.TextReader._read_rows (pandas\parser.c:11728)()

pandas\parser.pyx in pandas.parser.TextReader._convert_column_data (pandas\parser.c:13162)()

pandas\parser.pyx in pandas.parser.TextReader._convert_tokens (pandas\parser.c:14487)()

ValueError: could not convert string to float: '79,026,695.50'

このエラーが出ますか?私はすでに2つのオプションを指定しました

thousands = ',' , 
decimal = '.', 

私のコードまたはパンダのバグには何らかの問題がありますか?

+0

あなたが質問したファイルのコンテンツを追加することはできますか?または、gdocs、dropbox ..にファイルをアップロードしたほうがデータが信頼できない場合は? – jezrael

+0

問題の行のコピーを提供できますか? – IanS

答えて

1

それはセパレータが,thousandsであれば、あまりにも,ですのでquotingに問題があるようで、引用いくつかはcsvにしておく必要があります:

import pandas as pd 
from pandas.compat import StringIO 
import csv 

temp=u"""'a','Base Amount' 
'11','79,026,695.50'""" 
#after testing replace 'StringIO(temp)' to 'filename.csv' 
df = pd.read_csv(StringIO(temp), 
       dtype = { 'Base Amount' : 'float64' }, 
       thousands = ',' , 
       quotechar = "'", 
       quoting = csv.QUOTE_ALL, 
       decimal = '.', 
       encoding = 'ISO-8859-1') 

print (df) 
    a Base Amount 
0 11 79026695.5 

temp=u'''"a","Base Amount" 
"11","79,026,695.50"''' 
#after testing replace 'StringIO(temp)' to 'filename.csv' 
df = pd.read_csv(StringIO(temp), 
       dtype = { 'Base Amount' : 'float64' }, 
       thousands = ',' , 
       quotechar = '"', 
       quoting = csv.QUOTE_ALL, 
       decimal = '.', 
       encoding = 'ISO-8859-1') 

print (df) 
    a Base Amount 
0 11 79026695.5 
関連する問題