python—使用pd.apply()将列中的每个元素转换为列表,获取第一个元素,并将其转换为datetime

8zzbczxx  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(401)

我有一个只有一行的 Dataframe (在将来,它会更多,但我只是以它为例)。我试图抓住“结算日期”一栏。 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` 有人知道我为什么会出现这个错误以及如何解决吗?
gtlvzcf8

gtlvzcf81#

这应该起作用:

previous["SETTLEMENT_DATE"] = previous.apply(lambda r : create_datetime_object(r.SETTLEMENT_DATE) , axis=1)

相关问题