任何人都可以通过代码/命令帮助我,这些代码/命令将以下数据透视成列/行:
[('A', '1'),
('A', '2'),
('A', '3'),
('B', '4'),
('B', '5'),
('C', '6'),
('C', '7')]
进入
[('A', 'B', 'C'),
('1', '4', '6'),
('2', '5', '7'),
('3', '', '')]
我将使用标签分隔数据,以便将其粘贴到Excel中。
谢谢!
答案 0 :(得分:1)
必须有一个更短,更容易的方法,但这就是我所做的(demo):
a = [('A', '1'),
('A', '2'),
('A', '3'),
('B', '4'),
('B', '5'),
('C', '6'),
('C', '7')]
unique_keys = tuple(sorted(set(k for k,v in a)))
print(unique_keys)
values = tuple(sorted(v for k,v in a))
print(values)
ls = [unique_keys, ]
default = ''
# the sorted part allows me to iterate without checking which key I'm adding
while len(a):
tmp = []
for uk in unique_keys:
uk_added = False
for k,v in a:
if k == uk:
tmp.append(v)
a.remove((k,v))
uk_added = True
break
if not uk_added:
tmp.append(default)
ls.append(tmp)
print(ls)
答案 1 :(得分:0)
很抱歉给僵尸发贴,但是根据python docs的建议,我自己解决了这个问题,使用了以下列表理解:
>>> matrix = [
... [1, 2, 3, 4],
... [5, 6, 7, 8],
... [9, 10, 11, 12],
... ]
>>> [[row[i] for row in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
Python文档: Data Structures: Nested List Comprehensions
希望这有助于下一个人找到此帖子=)