繁体   English   中英

将每一行转置为 python 中的一列(来自 csv 文件)

[英]Transpose each row into a column in python (from a csv file)

我正在尝试编写执行以下操作的 python 代码。 有人可以帮忙吗? 谢谢!

读取 csv 文件 (file1) 中的每一行,转置它,并将其堆叠到新的 csv 文件 (file2) 中的单个列中。 File1 有 6 列 90 行的数据:请点击这里查看图片

我首先将 csv 转换为列表列表 -

import csv
with open(InputFile, 'r') as csvFile:
    list_of_lists = []        
    reader = csv.reader(csvFile)
    for row_num, row in enumerate(reader):
        list_of_lists.append(row)

然后用它来重新排列元素。 例如,如果您的列表看起来像 -

list_of_lists = [[1, 1, 1], [2, 2, 2], [3, 3, 3]]
result = []
for i in list_of_lists:
    for j in i:
        result.append(j)
print(result)

# Output:
# [1, 1, 1, 2, 2, 2, 3, 3, 3]

只是添加一个注释,它不是转置的意思。 Transpose 会将行转换为列,将列转换为行

import csv

with open('input.csv') as infile:
    csvreader = csv.reader(infile, delimiter=',') # select your csv's delimiter
    out = []
    for row in csvreader:
        out.extend(row)

现在您所有的行都已加入 1 个列表。 现在您可以将其保存为新的 csv 文件中的单列。

我猜想对于“6 列和 90 行”的输入,memory 不会成为问题。 所以你可以这样做:

import csv

with open("input.csv", "r") as fin, open("output.csv", "w") as fout:
    fout.write("\n".join(item for row in csv.reader(fin) for item in row))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM