如何使用python拆分CSV文件中的合并单元格
是否有任何方法可以使用python拆分/取消合并CSV文件中的单元格?我想要的解释如下- 结果应该是一个包含以下条目的新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
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)