1

csv 形式のデータがあり、3 番目の列と 6 番目の列の乗算を実行し、結果を末尾に追加する必要があります。私のデータは次のとおりです。

 TITLE,TITLE,T,T,T,T
 data,data,5,data,data,98.7,data
 data,data,2,data,data,97,data
 data,data,5,data,data,98,data
 data,data,4,data,data,8.7,data
 data,data,5,data,data,9.7,data
 data,data,12.5,data,data,198.7,data

私はコーディングに本当に慣れていませんが、私の試みは次のとおりでした: import csv import datetime import copy from collections import defaultdict

class_col = 2
data_col = 5

with open('minitest.csv', 'r') as f:
    data = [line.strip().split(',') for line in f]

for row in data:
    class_col*data_col

with open('minitest_edit.csv', 'w') as nf:
    nf.write('\n'.join(','.join(row) for row in data))

print "done"

エラーは発生しませんでした。何か提案はありますか? ありがとうOS」

4

4 に答える 4

5

とを使用csv.readercsv.writerます。

import csv


with open('minitest.csv', 'rb') as f:
    reader = csv.reader(f)
    data = [next(reader)]  # title row
    for row in reader:
        data.append(row + [float(row[2]) * float(row[5])])

with open('minitest.csv', 'wb') as nf:
    writer = csv.writer(nf)
    writer.writerows(data)

生成:

TITLE,TITLE,T,T,T,T
data,data,5,data,data,98.7,data,493.5
data,data,2,data,data,97,data,194.0
data,data,5,data,data,98,data,490.0
data,data,4,data,data,8.7,data,34.8
data,data,5,data,data,9.7,data,48.5
data,data,12.5,data,data,198.7,data,2483.75
于 2013-10-01T10:49:24.950 に答える
0

運が良ければ、LUNIX でプログラミングを行っている場合は、awk を使用できます。

awk -F "\"*,\"*" '{print $0 "," $3*$6 }' test.csv > result.csv

Python http://docs.python.org/2/library/subprocess.htmlで呼び出すことができます。

于 2013-10-03T11:11:32.947 に答える