如何解决使用 pd.apply() 将列中的每个元素转换为列表,抓取第一个元素,并将其转换为日期时间
我有一个只有一行的数据框(将来会更多,但我只是以此为例)。我正在尝试获取“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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。