有没有办法使用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,
,,,,,
我知道有一个unmerge excel工作簿的解决方案,但我还没有找到一种方法来处理CSV文件。任何帮助将不胜感激。
答案 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)