首页 > 解决方案 > 使用 strptime() 错误的日期时间类型转换

问题描述

我正在尝试使用 将作为日期的字符串转换为正确的日期格式datetime.strptime(),但我收到一条错误消息,指出传递的参数必须是 str 而不是 Series。

我已将所需的字符串列解析为 datetime 类型,然后尝试使用datetime.strptime(),但仍然收到错误消息,指出传递的参数必须是 str 而不是 Series。

有人可以帮我解决这个问题吗?

编写的代码如下图所示:

data2['Open_Time']=pd.to_datetime(data2['Open_Time'],infer_datetime_format=True).dt.date

from datetime import datetime

import datetime as dt

data3=dt.datetime.strptime(data2['Open_Time'],'%Y-%d-%m')

data3=data2.set_index(['Open_Time'])

data3.head(2)

错误信息是:

      1 from datetime import datetime

      2 import datetime as dt

----> 3 data3=dt.datetime.strptime(data2['Open_Time'],'%Y-%d-%m')

      4 data3=data2.set_index(['Open_Time'])

      5 data3.head(2)

TypeError: strptime() argument 1 must be str, not Series

标签: pythonjupyter-notebookpython-datetime

解决方案


当您将 Series 传递给 strptime 时,它​​无法确定将应用它的行。

因此,如果您想应用于整个系列,您应该以某种方式对其进行迭代。

这是一个例子:

data3 = data2['Open_Time'].apply(lambda x: dt.datetime.strptime(x, '%Y-%d-%m'))

这将迭代 data2['Open_Time'] ,将每个元素作为 x 并应用 strptime 函数。


推荐阅读