如何使用python拆分CSV文件中的合并单元格

时间:2016-07-18 18:24:53

标签: python csv split

有没有办法使用python在CSV文件中拆分/取消合并?我想要的是在下面解释 -

enter image description here

结果应该是一个包含以下条目的新CSV文件 -

enter image description here

文本版本看起来像这样:

Column1,Column2,Column3,Column4,Column5,
A,A1,A11,A111,A1111,
B,B1,B11,B111,B1111,
,,,,B1112,
,,,,B1113,
,,,,B1114,
,,,,,
,,,,,


Column1,Column2,Column3,Column4,Column5,
A,A1,A11,A111,A1111,
B,B1,B11,B111,B1111,
B,B1,B11,B111,B1112,
B,B1,B11,B111,B1113,
B,B1,B11,B111,B1114,
,,,,,

我知道有一个unmerge excel工作簿的解决方案,但我还没有找到一种方法来处理CSV文件。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

使用pandas可以非常简单地完成:

d = pandas.read_csv('your_file.csv')
d.fillna(method='ffill', inplace=True)
d.to_csv('new_file.csv', index=False)

基本上,这只是向前填充每列中具有最新实际值的空单元格。

答案 1 :(得分:0)

当然pandas是正确答案。无论如何,这是一个非熊猫解决方案:

import csv
from itertools import izip_longest

with open('input.csv') as input_file:
    input_file = csv.reader(input_file)
    with open('output.csv', 'w') as output_file:
        output_file = csv.writer(output_file)

        previous_row = []
        for row in input_file:
            if any(row):
                row = [a or b for a,b in izip_longest(row, previous_row, fillvalue='')]
            previous_row = row
            output_file.writerow(row)