Python:将列表写入csv,将第一行转换为一列

Python:将列表写入csv,将第一行转换为一列,python,csv,transpose,Python,Csv,Transpose,使用python,我将数据存储在一个列表中: a = [['a', 'b', 'c'], [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] 我想将此列表写入如下所示的csv: a, 1, 2, 3, 4 b, 5, 6, 7, 8 c, 9, 10, 11, 12 这是我在阅读了大量其他转置问题后得出的代码: length = len(a[0]) with open('test.csv', 'w') as test_file: file_wri

使用python,我将数据存储在一个列表中:

a = [['a', 'b', 'c'], [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
我想将此列表写入如下所示的csv:

a, 1, 2, 3, 4
b, 5, 6, 7, 8
c, 9, 10, 11, 12
这是我在阅读了大量其他转置问题后得出的代码:

length = len(a[0])
with open('test.csv', 'w') as test_file:
    file_writer = csv.writer(test_file)
    for i in range(length):
        file_writer.writerow([x[i] for x in a])
这给了我:

a,1,5,9
b,2,6,10
c,3,7,11
因此,它会转置整个列表(更不用说有些值甚至会丢失),但如上所示,我只希望转置第一行。我只是不知道在哪里可以找到我的手

多亏了Nf4r,我想出了以下方法——可能看起来很尴尬,但很管用:-)

可能是这样的:

a = [['a', 'b', 'c'], [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

for header, data in zip(a[0], a[1:]):
    result = "{header}, {data}".format(header= header,
                                       data= ', '.join((str(n) for n in data)))
    print(result)
a, 1, 2, 3, 4
b, 5, 6, 7, 8
c, 9, 10, 11, 12
<do what u want with it>
a=['a','b','c'],[1,2,3,4],[5,6,7,8],[9,10,11,12]]
对于标头,zip中的数据(a[0],a[1:]):
result=“{header},{data}”。格式(header=header,
数据=','.join((str(n)表示数据中的n)))
打印(结果)
a、 1,2,3,4
b、 5,6,7,8
c、 9,10,11,12

您只需拉取第一个子列表并压缩剩余的子列表,然后在组合成单个列表后使用writerows:

a = [['a', 'b', 'c'], [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
import csv

with open('test.csv', 'w') as test_file:
    file_writer = csv.writer(test_file)
    it = iter(a)
    col_1 = next(it)
    file_writer.writerows([a] + b for a,b in zip(col_1, it))

欢迎来到StackOverflow。请输入您迄今为止尝试过的代码,由于您没有尝试过,我已对您的问题进行了否决。是的,请提供更多代码。请考虑是否可以重新组织数据结构
a
。可能使用字典:
{“a”:[1,2,3,4];“b”:[5,6,7,8]…
。这将使解决方案变得更简单。@DhruvPathak+1:他做到了!@J.Chomel对否决票的解释总是有帮助的。@DhruvPathak我完全同意。再次感谢,我不知道如何在这里发布代码,所以我只会将其放在主帖子中。是的!这是我想做的,但我无法做到。谢谢你的帮助。
a = [['a', 'b', 'c'], [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
import csv

with open('test.csv', 'w') as test_file:
    file_writer = csv.writer(test_file)
    it = iter(a)
    col_1 = next(it)
    file_writer.writerows([a] + b for a,b in zip(col_1, it))