python中datetime.datetime,python中datetime应用举例

  python中datetime.datetime,python中datetime应用举例

  我试图创建一个可重用的def函数,将Panda数据框列中的Julian日期转换为一个强可乐风格的日期。使用此函数时,TypeError:strptime()参数1必须是str,而不是Series。

  进口熊猫作为pd

  导入日期时间

  df.head()

  SDKCOO SDDOCO DATE_GL

  0 00308 6118002.0 118337.0

  1 00308 6118002.0 118337.0

  2 00308 6118002.0 118337.0

  in: df[DATE_GL]。类型

  out: dtype(float64 )

  def my_func(x):

  x=x.astype(str)

  year=x.str[1:3]

  jday=x.str[3:6]

  x=年日

  x=x.astype(str)

  x=datetime.datetime.strptime(x, % y % j )#这一行给了我问题

  返回x

  df[日期_总帐]=my_func(df[日期_总帐])

  然后我得到这个类型错误:

  类型错误回溯(最近一次调用)

  在

  -1 df[ DATE _ GL ]=my _ func(df[ DATE _ GL ])

  在我的函数中

  5 x=年日

  6 x=x.astype(str)

  -7 x=datetime . datetime . strptime(x, %y%j )

  8返回x

  TypeError: strptime()参数1必须是str,而不是Series

  我可以如下实现所需的输出,但我必须修改上面的函数,并且还使用带有lambda函数的apply方法来实现它,这是我不想要的。我希望一切都可以通过这个函数,以便我可以轻松地调用它,并将其应用于其他具有相同日期格式问题的数据框。

  所需输出:

  SDKCOO SDDOCO DATE_GL

  0 00308 6118002.0 2018-12-03

  1 00308 6118002.0 2018-12-03

  2 00308 6118002.0 2018-12-03

  这是修改后的函数和其他几行应用程序代码,可以帮助我达到上面想要的效果。

  def my_func(x):

  x=x.astype(str)

  year=x.str[1:3]

  jday=x.str[3:6]

  x=年日

  x=x.astype(str)

  返回x

  df[日期_总帐]=df[日期_总帐]。apply(lambda x:datetime . datetime . strptime(x, %y%j ))

  为什么让所有东西都流过def函数都得不到预期的结果?是什么导致了TypeError问题?将我的x转换成字符串。

  值得注意的是,没有自定义函数也可以达到同样的目的:

  df[ DATE _ GL ]=PD . to _ datetime(df[ DATE _ GL ]。astype(str)。str[1:6],format=%y%j )

  这个也很好用。我在做日期转换的时候可以个人使用,但是我选择Pablos answer作为最佳答案,因为我需要将其内置到函数中,以便在向其他用户推广时使用。公司从根本上应用这个功能会更容易。尽量简单地使用尽可能少的代码。谢谢你的建议。

  Datetime仅适用于单个字符串,不适用于序列。当df [DATE_GL]被发送到函数时,您正在发送该列的三个值。

  要使用数据框的完整列,您应该更改:

  datetime.datetime.strptime(x, %y%j )

  到达

  x=pd.to_datetime(x,format=%y%j )

  您的代码应该如下所示:

  def my_func(x):

  x=x.astype(str)

  year=x.str[1:3]

  jday=x.str[3:6]

  x=年日

  x=x.astype(str)

  x=pd.to_datetime(x,format=%y%j )

  返回x

  df[日期_总帐]=my_func(df[日期_总帐])

  这很有效,这正是我所需要的!感谢大家解释datetime.datetime如何不适用于series,建议使用pd.to_datetime。我以前从未使用过它。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: