次の3列形式のデータセット(CSVファイル)があります。
A, B, C
3277,4733,54.1
3278,4741,51.0
3278,4750,28.4
3278,4768,36.0
3278,4776,50.1
3278,4784,51.4
3279,4792,82.6
3279,4806,78.2
3279,4814,36.4
そして、私は次のような3分割分割表を取得する必要があります:(申し訳ありませんが、これは完全に良く見えません)
A /B 4733 4741 4750 4768 4776 4784 4792 4806 4814
3277 C 54.1
3278 51 28.4 36 50.1 51.4
3279 82.6 78.2 36.4
優れた「ピボットテーブル」、OpenOfficeデータパイロット、またはR「テーブル(x、y、z)」と同様に
問題は、私のデータセットが巨大であるということです(合計500,000行を超え、AとBに約400の異なる要素があります(OOo、MSO、およびRの制限によりこれを達成できません)
Pythonスクリプトを使用して、このようなテーブルを作成できると確信しています。AとBはどちらも数値です(ただし、文字列として扱うことができます)。
誰かがこれに対処しましたか?(擬似コードまたはCまたはJavaのコードも歓迎されます...しかし、実装が高速であるため、Pythonの方が好きです:)
編集: ジョン・マチンのおかげで、ほとんどそれを持っています。次のPythonスクリプトは、私が探しているものをほぼ提供しますが、出力ファイルを書き込むと、(最初の行から取得した)「ヘッダー」の値が他の行に対応していないことがわかります。
from collections import defaultdict as dd
d = dd(lambda: dd(float))
input = open("input.txt")
output = open("output.txt","w")
while 1:
line = input.readline()
if not line:
break
line = line.strip('\n').strip('\r')
splitLine = line.split(',')
if (len(splitLine) <3):
break
d[splitLine[0]][splitLine[1]] = splitLine[2]
output.write("\t")
for k,v in d.items()[0][1].items():
output.write(str(k)+"\t")
output.write("\n")
for k,v in d.items():
output.write(k+"\t")
for k2,v2 in v.items():
output.write(str(v2)+"\t")
output.write("\n")