私は、約200のヘッダ名(最初は空です)を持つ大きなcsvファイルを持っています。 いくつかの選択した列を取得し、それらを新しいoutput.csvファイルにコピーしたいとします。私の問題は名前のないヘッダーをつかむことになる! (ヘッダー内の空の最初の要素)python:1つのヘッダが空のときに、選択されたcsvカラムを他のcsvファイルにコピーします。
のでinput.csvは何かのように、
,header1,header2,header3,header4, ... , header200
value0, value2, value2, value3, value4, ..., value200
,2,3,30,,, ... , 10
66,2,3,30,, ... , 10
などを(すべての行が空であっても、同じ数の要素を持っている)になります。
は、様々な質問を読んだ後、私は書くこと write CSV columns out in a different order in Python
からいくつかのコードを再利用、
import csv
from operator import itemgetter
SelectedSignals = ['header1', 'header4']
fiin=open('input.csv','rb') #open to read "r" in binary mode "b"
fiout=open('output.csv','wb') #open to write "w" in binary mode "b"
reader = csv.reader(fiin, delimiter=',')
writer = csv.writer(fiout, delimiter=',')
AllSignalNames = reader.next()
name2index = dict((name, index) for index, name in enumerate(AllSignalNames))
writeindices = [name2index[name] for name in SelectedSignals]
reorderfunc = itemgetter(*writeindices) # itemgetter was imported from operator module
writer.writerow(SelectedSignals)
for row in reader:
writer.writerow(reorderfunc(row))
この与え所望の出力、 が言う、
,header1,header4
value0, value4
,30
66,30
けどました問題は、
SelectedSignals = [' ', 'header1', 'header4']
最初の列を取得します。返すKeyError
私はPythonの初心者ですので、どのようなヒントも高く評価されています。
ありがとうございます。 'name2index.get(name、0)'が最適です。 – Massagran