4

これらは非常に単純なもののように見えますが、私がそれを乗り越えることができないかもしれないので検索してください。

私はこのようなCSVファイルを持っています:

Day,Event,Value
1,"Rent",500
7,"Wage Payments",1000

'value'列のすべての数値を合計したいと思います。これまでのところ、私のコードは次のとおりです。

cr = csv.reader(open("file.csv","rb"))

for row in cr:    
    print row

#print sum(Value)

その値を合計するにはどうすればよいですか?

ありがとうございました。

4

4 に答える 4

10

csvファイルの最初の行がであると考えると'Day,Event,Value'generator expressionsum()

>>> cr = csv.reader(open("file.csv","rb"))
>>> cr.next()
>>> print sum(int(x[2]) for x in cr)
1500
于 2012-05-18T18:40:03.550 に答える
3
cr = csv.reader(open("file.csv","rb"))
cr.next() # to skip the header 

total = 0
for row in cr:  
   total += int(row[2])
   # possibly do other things with data/rows 

print total

これを行うにはもっと簡潔な方法(リスト内包表記やジェネレータ式など)がありますが、これは基本的な考え方を提供し、必要に応じて各行で他のことを行うこともできます(@MarkRansomでも指摘されています)

于 2012-05-18T18:35:25.977 に答える
0

ガベージ値を作成し、最初の2つの値を読み込んで「ゴミ箱に移動」し、3番目の値を読み込むときに合計に追加します。ファイルはヘッダーを取得するため、最初はファイルの最初の3つの値を無視する必要があることを忘れないでください。

于 2012-05-18T18:36:13.010 に答える
0

'value'が列2にあるとすると、次の単純なforループを実行できます。

value_sum=0
for row in cr:
    value_sum += row[2]

または、理解している場合は、理解を使用できます。

value_sum = sum([row[2] for row in cr])
于 2012-05-18T18:36:23.363 に答える