如何在Python中垂直合并几个csv文件?

Posted

技术标签:

【中文标题】如何在Python中垂直合并几个csv文件?【英文标题】:How to merge vertically several csv files in Python? 【发布时间】: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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于如何在Python中垂直合并几个csv文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python Pandas 合并多个 CSV 文件

如何使用python合并文件夹中的多个.csv

如何通过在 Python 中将两个列表合并为一个,使用 CSV 模块或 Pandas 写入 csv 或 Excel 文件?

使用glob后如何将数据框合并到一个csv文件中?

Python如何合并两个csv文件

如何把多个CSV文件的数据变成一个EXCEL表格