【发布时间】:2017-01-25 13:34:23
【问题描述】:
我有以下 csv 数据
country,sale,date,trans_factor
India,403171,12/01/2012,1
Bhutan,394096,12/01/2012,2
Nepal,super,12/01/2012,3
madhya,355883,12/01/2012,4
sudan,man,12/01/2012,5
csv_data = pandas.read_csv(csv_file_data, skiprows=[0], names=original_csv_header, parse_dates=True, infer_datetime_format=True)
print csv_data
country sale date trans_factor
0 India 403171 12/01/2012 1
1 Bhutan 394096 12/01/2012 2
2 Nepal super 12/01/2012 3
3 madhya 355883 12/01/2012 4
4 sudan man 12/01/2012 5
即使在添加parse_dates=True 之后,上面的代码也没有将值从12/01/2012 更改为2012-01-12,我不知道为什么
我想以'%d/%m/%Y' 格式格式化日期列,所以我尝试使用以下代码
dates = {
'dd/mm/yy': "%d/%m/%Y",
'mm/dd/yy': "%m/%d/%Y",
}
def return_date_fromat(d, date_format):
return datetime.datetime.strptime(d, date_format)
csv_data["date"] = csv_data["date"].apply(lambda d: return_date_fromat(d, dates['dd/mm/yy']))
基本上我使用 lambda 的另一个函数 return_date_fromat 因为当我像下面这样使用时
csv_data["date"] = csv_data["date"].apply(lambda d: datetime.datetime.strptime(d, dates['dd/mm/yy'])
我得到了*** NameError: global name 'dates' is not defined,因此我将函数return_date_fromat 用于lambda
那么最后如何格式化日期呢?
【问题讨论】: