【问题标题】:Merge multiple csv files and add a new column合并多个 csv 文件并添加一个新列
【发布时间】:2015-03-05 05:23:02
【问题描述】:

我有一堆 csv 文件,我需要合并到一个文件中,但有一个额外的日期列

xxxxx20150216.csv

xxxxx20130802.csv

xxxxx20130803.csv

xxxxx20130804.csv

我正在使用 (http://cbrownley.wordpress.com/2014/03/09/pythons-voracious-glob-module/) 中的以下代码来合并它们

import csv
import glob
import os
import sys

data_path = ""
outfile_path = "alldata.csv"
filewriter = csv.writer(open(outfile_path,'wb'))
file_counter = 0
for input_file in glob.glob(os.path.join(data_path,'*.csv')):
        with open(input_file,'rU') as csv_file:
                filereader = csv.reader(csv_file)
                if file_counter < 1:
                        for row in filereader:
                                filewriter.writerow(row)
                else:
                        header = next(filereader,None)
                        for row in filereader:
                                filewriter.writerow(row)
        file_counter += 1

但现在我需要从文件名中提取日期并将其与其他行一起添加为列。实现此目的最简单的方法是什么?

【问题讨论】:

    标签: python csv


    【解决方案1】:

    那……呢:

        with open(input_file,'rU') as csv_file:
            filereader = csv.reader(csv_file)
            name, ext = os.path.splitext(input_file)
            date = name[-8:]
            if file_counter < 1:
                for i, row in enumerate(filereader):
                    if i==0: row.append('Date')
                    else: row.append(date)
                    filewriter.writerow(row)
                else:
                    header = next(filereader,None)
                    for row in filereader:
                        row.append(date)
                        filewriter.writerow(row)
    

    唯一棘手的部分是从第一个 CSV 文件中获取标题!-)

    【讨论】:

    • 不赞成就接受——来自拥有 40 多位代表的人很奇怪!您接受并发表感谢评论但选择不投票的任何具体原因?!
    • 对不起.. 新的和尴尬的堆栈溢出用户在这里 :( 仍然了解这是如何工作的。再次感谢您的帮助,为我节省几个小时!
    • 请注意,rU(“通用换行符”)访问模式已弃用。您应该为此使用newline 参数:open(input_file,'r', newline='...')。在此处查看文档docs.python.org/3.5/library/functions.html#open
    猜你喜欢
    • 2017-08-20
    • 2014-11-09
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 2013-07-19
    相关资源
    最近更新 更多