迭代地合并python中的两个CSV文件

时间:2015-10-09 22:15:12

标签: python csv merge header

我在多个.csv文件中保存了一组数据,这些文件具有固定数量的列。每列对应不同的测量值。

我想为每个文件添加一个标题。所有文件的标题都相同,并且由三行组成。其中两行用于标识其对应的列。

我想我可以将标头保存在单独的.csv文件中,然后使用for循环迭代地将其与每个数据文件合并。

我怎么能在python中这样做?我是这门语言的新手。

3 个答案:

答案 0 :(得分:1)

是的,您可以使用pandas轻松完成。它会比您目前认为可能产生问题的更快更容易。

三个简单的命令将用于读取,合并并将其放入新文件中,它们是:

pandas.read_csv()
pandas.merge()
pandas.to_csv()

您可以阅读您必须使用的参数以及有关它们的更多详细信息here.

答案 1 :(得分:0)

for your case you may need first to create new files with
the headers with them. then you would do another loop to
add the rows, but skipping the header. 

import csv
with open("data_out.csv","a") as fout:
    # first file:
    with open("data.csv") as f: # you header file
        for line in f:
            fout.write(line)

    with open("data_2.csv") as f:
        next(f)        # this will skip first line
        for line in f:
          fout.write(line)

答案 2 :(得分:0)

  

与其运行for循环为多个文件添加两个文件,不如执行一个更简单的解决方案,那就是将要合并的所有csv文件放入一个文件夹中,然后将路径提供给程序。这会将所有csv文件合并为一个csv文件。   (注意:每个文件的属性必须相同)

import os
import pandas as pd

#give the path to the folder containing the multiple csv files
dirList = os.listdir(path)

#Put all their names into a list
filenames = []
for item in dirList:
    if ".csv" in item:
        filenames.append(item) 

#Create a dataframe and make sure it's empty (not required but safe practice if using for appending)
df1 = pd.Dataframe()
df1.drop(df1.index, inplace=True)

#Convert each file to a dataframe and append it to dataframe df1
for f in filenames:
    df = pd.read_csv(f)
    df1 = df1.append(df)

#Convert the dataframe into a single csvfile
df1.to_csv(csvfile, encoding='utf-8', index=False)