在python的datatable框架中将字符串列转换为日期格式

2024-06-17 10:07:01 发布

您现在位置:Python中文网/ 问答频道 /正文

举个简单的例子:

import datatable as dt
import pandas as pd
from datetime import datetime

d_t = dt.Frame(pd.DataFrame({"Date": ["04/05/2020", "04/06/2020"]}))

str32类型中只有一个名为Date的列具有两个值

如何在datatable框架中将日期列转换为日期格式

我试过了

dates_list = [datetime.strptime(date, "%m/%d/%Y") for date in d_t["Date"].to_list()[0]]
d_t[:,"NewDate"] = dt.Frame(dates_list)
d_t["NewDate"].max()
# The code can run successfully so far.

但结果如下所示:

     NewDate
    ▪▪▪▪▪▪▪▪
  0     NA

我认为这仍然不是一种约会形式

即使我查了每一列的类型,我仍然不知道:

d_t.stypes

[Out]: (stype.str32, stype.obj64)

有没有办法解决这个问题或其他选择

谢谢你的回答


Tags: import类型datetimedateasdtframelist
1条回答
网友
1楼 · 发布于 2024-06-17 10:07:01

datatable 1.0引入了新的列类型^{}^{}

在这种情况下,从字符串列Datedate32类型的转换如下:

d_t[:, dt.update(Date_date = 
             dt.time.ymd(dt.as_type(dt.str.slice(dt.f.Date, 6, 10), int), 
                         dt.as_type(dt.str.slice(dt.f.Date, 3, 5), int), 
                         dt.as_type(dt.str.slice(dt.f.Date, 0, 2), int)))]

d_t

    Date        Date_date
    ▪▪▪▪        ▪▪▪▪
0   04/05/2020  2020-05-04
1   04/06/2020  2020-06-04

虽然有点冗长,但它在datatable中执行所有操作,而不会产生开销和中间列表或帧的惩罚。希望将来的版本将在^{}之外添加更多函数,以简化这种转换操作

如果您选择了ISO 8601 standard来表示日期(即%Y-%m-%d格式的字符串),那么转换为date32会简单得多:

d_t = dt.Frame({"Date": ["2020-04-05", "2020-04-06"]})
d_t[0] = dt.Type.date32
d_t.stypes

> (stype.date32,)

相关问题 更多 >