首页 > 解决方案 > 将csv列中的一行拆分为多行,在python中保持其他列相同

问题描述

假设我有一个每行 4 列的 csv 文件,如下所示:

712,713,714,  26   blah   blah

我想要这样的结果:

712    26    blah    blah 

713    26    blah    blah 

714    26    blah    blah 

现在我将在 python 中读取 csv 文件,但是如何在不更改其他列的情况下拆分行,然后将结果写入另一个 csv 文件。

ps-我不知道熊猫所以我会使用简单的 csv 模块

标签: python-3.xcsv

解决方案


直接用csv.readerandcsv.writer对象:

样品test.csv

712,713,714,  26   blah   blah
1,2,3,  11   aaa   bbb

import csv

inp_fname = 'test.csv'
out_fname = 'transposed.csv'

with open(inp_fname, 'r', newline='') as in_csvfile, \
        open(out_fname, 'w', newline='') as out_csvfile:
    reader = csv.reader(in_csvfile, delimiter=' ', skipinitialspace=True)
    writer = csv.writer(out_csvfile, delimiter='\t')

    for row in reader:
        for v in row[0].rstrip(',').split(','):
            writer.writerow([v] + row[1:])

最终transposed.csv文件内容:

712 26  blah    blah
713 26  blah    blah
714 26  blah    blah
1   11  aaa bbb
2   11  aaa bbb
3   11  aaa bbb

推荐阅读