【问题标题】:How to merge vertically several csv files in Python?如何在Python中垂直合并几个csv文件?
【发布时间】:2014-07-06 10:28:58
【问题描述】:

我需要在 Python 中垂直合并来自多个 CSV 电子表格的数据。它们的结构是相同的,我只需要将一个表的数据放在下面的顶部,因为它们是年度调查的月份。我尝试了几种我在谷歌上搜索的方法,但我找不到像以下这样简单的方法:

import csv

spreadsheets1 = open('0113_RE_fscom.csv','r')
spreadsheets2 = open('0213_RE_fscom.csv','r')
spreadsheets = spreadsheets1 + spreadsheets2

with spreadsheet as csvfile:
   sales = csv.reader(csvfile)
   for row in sales:
      print row

【问题讨论】:

    标签: python csv merge


    【解决方案1】:

    看起来您只是忘记了遍历文件。试试这个代码:

    import csv
    
    spreadsheet_filenames = [
        '0113_RE_fscom.csv',
        '0213_RE_fscom.csv',
    ]
    
    for filename in spreadsheet_filenames:
        with open(filename, 'r') as csvfile:
            sales = csv.reader(csvfile)
            for row in sales:
                print row
    

    【讨论】:

      【解决方案2】:

      这对于熊猫来说非常简单。

      import pandas as pd
      f1 = pd.read_csv('0113_RE_fscom.csv', header=None)
      f2 = pd.read_csv('0213_RE_fscom.csv', header=None)
      merged = pd.concat(f1, f2)
      merged.to_csv('merged.csv', index=None, header=None)
      

      如果您的文件确实有标题,请删除 header=None

      【讨论】:

        【解决方案3】:

        这个怎么样:

        import csv
        from itertools import izip
        
        with open('0113_RE_fscom.csv', 'r') as f1, open('0113_RE_fscom.csv', 'r') as f2:
           csv1 = csv.reader(f1, delimiter=',')
           csv2 = csv.reader(f2, delimiter=',')
           for line1, line2 in izip(csv1, csv2):
              print line1 + line2
        

        【讨论】:

          猜你喜欢
          • 2011-04-28
          • 2020-11-25
          • 2011-01-31
          • 2022-01-14
          • 2019-03-27
          • 1970-01-01
          • 2019-05-07
          • 1970-01-01
          相关资源
          最近更新 更多