私はC#を使用しており、データをcsvファイルに書き込みます(さらに使用するため)。しかし、私のファイルは大規模になり、転置する必要があります。それを行う最も簡単な方法は何ですか。任意のプログラムで?
ギル
ここにPythonで概念実証スクリプトを少し書きました。バグがあることは認めますが、パフォーマンスが改善される可能性がありますが、それは可能です。40x40ファイルに対して実行したところ、目的の結果が得られました。サンプルデータセットのようなものに対して実行を開始しましたが、待つのに時間がかかりすぎました。
path = mkdtemp()
try :
with open('/home/user/big-csv', 'rb') as instream:
reader = csv.reader(instream)
for i, row in enumerate(reader):
for j, field in enumerate(row):
with open(join(path, 'new row {0:0>2}'.format(j)), 'ab') as new_row_stream:
contents = [ '{0},'.format(field) ]
new_row_stream.writelines(contents)
print 'read row {0:0>2}'.format(i)
with open('/home/user/transpose-csv', 'wb') as outstream:
files = glob(join(path, '*'))
files.sort()
for filename in files:
with open(filename, 'rb') as row_file:
contents = row_file.readlines()
outstream.writelines(contents + [ '\n' ])
finally:
print "done"
rmtree(path)
それは本当に依存します。これらをデータベースから取得していますか?MySql import ステートメントを使用できます。 http://dev.mysql.com/doc/refman/5.1/en/load-data.html
または、ストリームライター オブジェクトを使用して、データをループしてファイル ストリームに追加することもできます。
StreamWriter sw = new StreamWriter('pathtofile');
foreach(String[] value in lstValueList){
String something = value[1] + "," + value[2];
sw.WriteLine(something);
}