平野のPython:
この魔法のしくみ
import csv
reader = csv.Reader(open('combined.csv'))
result = {}
for row in reader:
idx = row[0]
values = row[1:]
if idx in result:
result[idx] = [result[idx][i] or v for i, v in enumerate(values)]
else:
result[idx] = values
:CSVの行を超える
- 反復は、すべてのレコードに対して
- ファイルと同じインデックスを持つレコードがあった場合、我々は確認してください前に
- このインデックスが初めて表示される場合は、行の値をコピーしてください。
- 重複している場合は、行の値を空のセルに割り当てます。
最後のステップは、or
トリックを介して行われます:None or value
はvalue
を返します。 value or anything
はvalue
を返します。したがって、result[idx][i] or v
は、空でない場合は既存の値を返し、行の値は返されません。その後、出力するには
この重複行を失うことなく、私たちはインデックスを維持する必要があり、反復処理し、result
エントリに対応する出力:
indices = []
for row in reader:
# ...
indices.append(idx)
writer = csv.writer(open('outfile.csv', 'w'))
for idx in indices:
writer.writerow([idx] + result[idx])
は 'OK pandas'たり、プレーンなPythonで解決策を探している使用しています? – Marat