使用 pd.apply() 将列中的每个元素转换为列表,获取第一个元素,并将其转换为日期时间
Using pd.apply() to turn each element in a column to a list, grab the 1st element, and turn it into datetime
我有一个只有一行的数据框(将来会更多,但我只是以此为例)。我正在尝试获取“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, 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)
我有一个只有一行的数据框(将来会更多,但我只是以此为例)。我正在尝试获取“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, 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)