问题描述
我有一个只有一行的数据框(将来会更多,但我只是以此为例)。我正在尝试获取“SETTLEMENT_DATE”列。
print(prevIoUs["SETTLEMENT_DATE"])
0 2021-06-22 00:00:00.0
Name: SETTLEMENT_DATE,dtype: object
。
为了得到日期,我做了 list(prevIoUs["SETTLEMENT_DATE"])[0]
,结果是:
'2021-06-22 00:00:00.0'
。现在我使用以下方法将其转换为日期格式:
def create_datetime_object(pd_object):
date_time_str = list(pd_object)[0]
return datetime.strptime(date_time_str,"%Y-%m-%d %H:%M:%s.%f")
此代码:create_datetime_object(prevIoUs["SETTLEMENT_DATE"])
产量:datetime.datetime(2021,6,22,0)
以后会有多行数据,所以想用pd.apply()把这个函数应用到整列。但是当我这样做时,我得到:
prevIoUs["SETTLEMENT_DATE"] = prevIoUs["SETTLEMENT_DATE"].apply(create_datetime_object)
ValueError: time data '2' does not match format '%Y-%m-%d %H:%M:%s.%f
解决方法
这应该有效:
previous["SETTLEMENT_DATE"] = previous.apply(lambda r : create_datetime_object(r.SETTLEMENT_DATE),axis=1)