Pythonで行を転置するのに助けが必要です。
たとえば、私はこの種のファイルを持っています:
a | 1
a | 2
a | 3
b | 4
b | 5
b | 6
私はそれをこのように見せたい:
a | 1 | 2 | 3
b | 4 | 5 | 6
私はこれを行うことによって行全体を転置する方法を知っています:
import csv
from itertools import izip
a = izip(*csv.reader(open("fan.csv", "rb")))
csv.writer(open("fan1.csv", "wb")).writerows(a)
しかし、私はこれを使用して私が望む結果を得る方法を知りませんでした。
上記のスクリプトは私にこの結果をもたらします:
a | a | a | b | b | b
1 | 2 | 3 | 4 | 5 | 6
移調するのではなく、キーの値をグループ化します。itertools.groupby
そのための便利なツールです:
from itertools import groupby
r = csv.reader(open("fan.csv", "rb"))
a = [[k] + [x[1] for x in g] for k, g in groupby(r, key=lambda row: row[0])]
これにより、csv行が最初の列の値でグループ化され、グループ化された値が、それぞれのグループの2番目の列のすべての値と結合されて新しい行になります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加