Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python拆分CSV文件中的合并单元格_Python_Csv_Split - Fatal编程技术网

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

如何使用python拆分CSV文件中的合并单元格,python,csv,split,Python,Csv,Split,是否有任何方法可以使用python拆分/取消合并CSV文件中的单元格?我想要的解释如下- 结果应该是一个包含以下条目的新CSV文件- 文本版本看起来有点像这样: Column1,Column2,Column3,Column4,Column5, A,A1,A11,A111,A1111, B,B1,B11,B111,B1111, ,,,,B1112, ,,,,B1113, ,,,,B1114, ,,,,, ,,,,, Column1,Column2,Column3,Column4,Colum

是否有任何方法可以使用python拆分/取消合并CSV文件中的单元格?我想要的解释如下-

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

文本版本看起来有点像这样:

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,
,,,,,

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

只需以下几点:


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

当然
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)

您显示的似乎是电子表格程序的图片。实际的CSV文件是什么样子的?一般来说,CSV文件没有类似“合并单元格”的内容。@BrenBarn数据已从Tableau提取到CSV文件中,在excel中打开时,它看起来与上面所示的内容类似。您可以将原始CSV内容(第一个示例)的示例粘贴到帖子的文本中吗?(在文本编辑器(而不是Excel)中打开文件,然后复制前几行。)很抱歉,这太天真了,我对所有这些都非常陌生。。你能帮我吗?看起来像是熊猫的工作。熊猫的回答很有效,罗布,谢谢你的回答!
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)