如何使用python转置和删除表中的重复值



我需要帮助用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 行进行分组,并将分组值与其各自组中的所有第二列值合并到一个新行中。

最新更新