【问题标题】:How to split merged cells in a CSV file using python如何使用python拆分CSV文件中的合并单元格
【发布时间】:2016-11-21 11:13:34
【问题描述】:

有没有办法使用 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 文件执行此操作的方法。任何帮助将不胜感激。

【问题讨论】:

  • 您展示的似乎是电子表格程序的图片。实际的 CSV 文件是什么样的?一般来说,CSV 文件没有“合并单元格”之类的内容。
  • @BrenBarn 数据已经从 Tableau 中提取到一个 CSV 文件中,当在 excel 中打开时,它看起来类似于上面显示的内容
  • 您能否将原始 CSV 内容(您的第一个示例)的示例粘贴到您的帖子文本中? (在文本编辑器中打开文件,而不是 Excel,然后复制前几行。)
  • 对不起,我的天真,我对这一切都非常陌生..你能帮忙
  • 看起来像是 Pandas 的工作

标签: python csv split


【解决方案1】:

使用pandas 可以相当简单地完成:

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

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

【讨论】:

    【解决方案2】:

    当然pandas 是正确答案。无论如何,这是一个非 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)
    

    【讨论】:

    • 熊猫回答有效 Rob,不过感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多