编写一个函数来转换python中不同的日期格式

时间:2016-05-18 05:15:59

标签: python date datetime pycharm

我正在使用Python学习Pycharm。我正在尝试编写一个函数将不同的日期格式转换为1种日期格式。特别是,我想让函数知道它是什么格式以及我想要什么格式,并且可以将此函数用于任何未来的数据集。我正在处理相当大的数据集(目前只有20gb,但之后需要处理200gb的数据集)。

到目前为止,我已经尝试过这个:

import csv
df = csv.DictReader(open('dataset.csv'))

def format_date(df, dateformat):
    """this will format the column containing dates'"""
    for row in df:
        row['Date'] = datetime.datetime.strptime(row['Date'], '%Y%m%d')
        csv.DictWriter(str(df)+'_converted.csv', data)
        return
到目前为止,我知道这个功能,

(row['Date'] = datetime.datetime.strptime(row['Date'], '%Y%m%d'))

当我试图将其打印出来时起作用。但是,如何使用更新的"Date"列将所有这些行写入新的csv文件?并且有一种方法,比如将来,我可以把它设置为不需要的日期的格式(即format_date(df,yyyy/mm/yy)Python将吐出一个包含新日期格式的新csv文件

2 个答案:

答案 0 :(得分:1)

您可以创建一系列可能的日期格式。迭代它并尝试转换日期。

这样的事情:

from datetime import datetime

ALLOWED_FORMATS = ['%Y-%m-%d', '%Y/%m/%d', '%d.%m.%Y']

def convert_date(string):

    for format in ALLOWED_FORMATS:
        try:
            return datetime.strptime(string, format)
        except ValueError:
            pass

这就是Django的DatetimeField如何做到这一点,如果你的项目中已经有Django,你可以将你的字符串传递给DatetimeField实例。

列表中的格式顺序可能很重要,以避免错误的解析。但是,如果日期格式不同,则可能存在实际模糊性。

答案 1 :(得分:0)

回答如何将新更新的csv写入文件。

使用csv.DictWriter写一行以将行写入CSV文件

output_file = open('output.csv','w')
df2 = csv.DictWriter(output_file, row.keys()) #row.keys() is to write headers to output CSV file which are `keys` of row
df2.writeheader()
df2.writerow(row)