Skip to main content
 首页 » 编程设计

python之我将如何标准化 csv 文件中的日期 Python

2025年05月04日21小虾米

我有一个 CSV 文件,其中包含一个名为 start_date 的字段,其中包含各种格式的数据。

一些格式包括例如 June 23, 1912 或 5/11/1930(月、日、年)。但并非所有值都是有效日期。

我想在 start_date 列旁边添加一个 start_date_description 字段,以过滤无效的日期值。最后,将 start_date 中的所有有效日期值标准化为 ISO 8601(即 YYYY-MM-DD)。

到目前为止,我只能将 start_date 加载到我的文件中,我被卡住了,希望得到 ant 的帮助。拜托,任何解决方案,尤其是不使用库的解决方案都会很棒!

import csv 
 
date_column = ("start_date") 
f = open("test.csv","r") 
csv_reader = csv.reader(f) 
 
headers = None 
results = [] 
for row in csv_reader: 
    if not headers: 
        headers = [] 
        for i, col in enumerate(row): 
           if col in date_column: 
            headers.append(i) 
    else: 
        results.append(([row[i] for i in headers])) 
 
print results 

请您参考如下方法:

一种方法是使用dateutil模块,可以像下面这样解析数据:

from dateutil import parser 
parser.parse('3/16/78') 
parser.parse('4-Apr') # this will give current year i.e. 2017 

然后可以通过以下方式解析为您的格式

dt = parser.parse('3/16/78') 
dt.strftime('%Y-%m-%d') 

假设您有数据框格式的表,您现在可以定义解析函数并应用到列,如下所示:

def parse_date(start_time): 
    try: 
        return parser.parse(x).strftime('%Y-%m-%d') 
    except: 
        return '' 
df['parse_date'] = df.start_date.map(lambda x: parse_date(x))