将日期列添加到python中的附加输出csv文件

Posted

技术标签:

【中文标题】将日期列添加到python中的附加输出csv文件【英文标题】:adding date column to the appending output csv file in python 【发布时间】:2014-04-08 03:46:48 【问题描述】:

我使用下面的代码来合并所有 csv 文件:每个文件下面有 10,000 行:

billing_report_2014-02-01.csv billing_report_2014-02-02.csv :

fout=open("out.csv","a")
for num in range(1,10):
    print num
    for line in open("billing_report_2014-02-0"+str(num)+".csv"):
         fout.write(line) 
for num in range(10,29):
    print num
    for line in open("billing_report_2014-02-"+str(num)+".csv"):
         fout.write(line) 
fout.close()

但现在我想在 out.csv 文件中添加新的日期列,如何将日期列添加到我将 billing_report_2014-02-01 附加到 out.csv 的每一行中并具有“2014-02-01”的值, 和 我将 billing_report_2014-02-02 附加到 out.csv 的每一行的“2014-02-02”值我该如何处理?

【问题讨论】:

@Nabla 你能澄清一下吗?我对python相当陌生。谢谢 我说的在这种情况下是没有必要的,我评论的太快了。不过,您可能想查找 csv 模块,它有助于处理 csv 文件。还有datetime 模块,它可以简化您的日期格式,请参阅date.strftime 【参考方案1】:

我认为您可以在末尾添加日期:

for line in open("billing_report_2014-02-0"+str(num)+".csv"):
     fout.write(line+',DATE INFORMATION') 

我假设您的 CSV 真的是逗号分隔,如果它是制表符分隔的字符应该是 \t

你也可以通过换行来使用中间步骤:

line = line + ', DATE INFORMATION'

当您尝试添加文件名日期时,只需为每个变量添加它:

line = line + ', 2014-02-0'+ str(num//10)

如果总是 ",LLC" 字符串表达式,您可以使用替换函数,请参见下面的示例

>>> string = "100, 90101, California, Example company,LLC, other data"
>>> string.replace(',LLC',';LLC')
'100, 90101, California, Example company;LLC, other data'
>>> 

把它们放在一起,并尝试从@Jon Clements 那里获得一些灵感(KUDOS!):

def combine_and_add_date(year, month, startday, endday, replace_dict):
    fout=open("out.csv","a")
    for num in range(startday,endday+1):
        daynum = str(num)
        if len(daynum) ==1:
            daynum = '0'+daynum

        date_info = str(year+'-'month+'-'+daynum)
        source_name = 'billing_report_'+date_info+'.csv'

        for line in open(source_name):
            for key in replace_dict:
                line.replace(key,replact_dict[key])

            fout.write(line+','+date_info) 

    fout.close()

我希望这行得通,你应该(希望我是新手......)这样使用它,注意字典旨在让你进行各种替换

combine_and_add_date("2014","02",1,28, ',LLC': ';LLC', ',PLC':';PLC') 

手指交叉

【讨论】:

我想他可能想要实际的日期。 @2705114-john 这几乎可以正常工作,我的文件是用逗号分隔的,但在业务栏下有一些公司有“公司名称,LLC”。所以当我使用上面的代码时,与“,LLC”有公司的行。将进一步移动一列。我该如何解决这个问题?【参考方案2】:

列出您要处理的文件名,然后从中获取数据,在输入文件上构建一个生成器以删除尾随的新行,并添加一个带有日期的新字段...例如:

filenames = [
  'billing_report_2014-02-01.csv',
  'billing_report_2014-02-02.csv'
]

with open('out.csv', 'w') as fout:
    for filename in filenames:
        to_append = filename.rpartition('_')[2].partition('.')[0]
        with open(filename) as fin:
            fout.writelines(',\n'.format(line.rstrip(),to_append) for line in fin)

【讨论】:

好的,我知道文件名了..应该把它放在我自己身上。

以上是关于将日期列添加到python中的附加输出csv文件的主要内容,如果未能解决你的问题,请参考以下文章

如何遍历数据框,将新字段添加到系列,然后将该系列附加到 csv?

将 csv 文件加载到 BIGquery 中并在插入数据时添加日期列

添加列并附加数据框

csv 文件中的模式匹配并附加到匹配的行

将 pandas DataFrame 列附加到 CSV

使用 SSIS 包将日期时间戳列添加到最终目标表