3

csv ファイルがあり、内容の一部をプロットしようとしていて、文字列を浮動小数点数に変換する必要があります。私の問題は次のとおりです。

以下のコードを実行すると、

with open('meteors.csv', 'rU') as csvfile:
    reader=csv.reader(csvfile)
    for row in reader:    
        print row[6]

私はこの出力を得ます:

58.58333

代わりに試してみると

print type(row[6])

私はこの出力を得ます:

<type 'str'>

でもやってみると

 print float(row[6])

次のエラーが表示されます。

ValueError: could not convert string to float: coordinate_1

何が起こっているか知っている人はいますか?

4

2 に答える 2

4

ほとんどの場合、最初の行が表示されます。これは、CSV ファイルの列ヘッダーcoordinate_1があり、ヘッダーです。

最初の行をスキップできます。

with open('meteors.csv', 'rU') as csvfile:
    reader=csv.reader(csvfile)
    reader.next() # skips the first (header) row
    for row in reader:    
        print row[6]

または、DictReader次のように を使用します。

with open('meteors.csv', 'rU') as csvfile:
    reader=csv.DictReader(csvfile)
    for row in reader:    
        print row['coordinate_1']
于 2013-04-23T04:46:11.260 に答える
2

CSV ファイルには、各列の名前をリストするヘッダーが含まれている可能性があります。これらの名前を s に変換することはできないためfloat、エラーの原因はそこにあります。

最初にヘッダーを使用する必要があります。

with open('meteors.csv', 'rU') as csvfile:
    reader = csv.reader(csvfile)
    header = next(reader)

    for row in reader:
        print float(row[6])
于 2013-04-23T04:44:07.460 に答える