使用 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)