我正在使用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文件
答案 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)