gpt4 book ai didi

python - 创建新列时日期转换不起作用

转载 作者:行者123 更新时间:2023-12-05 07:33:39 25 4
gpt4 key购买 nike

我想做的是将我的日期转换为 datetime64[D]。在源代码中——一些日期是对象类型,一些日期是 datetime64[ns]。 我不是在问如何进行转换 - 我知道。但是当我创建一个新列时发生了一些事情,下面的代码似乎没有影响并且 datetime64[ns] 没有改变。

 df2['date'].values.astype('datetime64[D]')

这是示例数据框:

d = {'date' :['2015-10-05 15:08:43', '2015-10-05 19:17:12', '2015-10-06 15:51:22', '2015-10-06 19:39:18', '2015-10-06 19:58:06', '2015-12-18 11:09:01'], 'name': ['john', 'tom', 'phill', 'nero', 'bob', 'rob']}
df2 = pd.DataFrame(data = d)

df2 中的日期是对象类型。当我们进行以下操作时

df2['date'] = pd.to_datetime(df2['date'])

日期变为数据类型:datetime64[ns]。

现在下面的代码可以工作并产生 datetime64[D] 输出

df2['date'].values.astype('datetime64[D]')

但是当我创建一个新列时,它又回到了

df2['date'] = df2['date'].values.astype('datetime64[D]')

在这里查看输出 -

名称:日期,数据类型:datetime64[ns]

所以,我的问题是,为什么在我创建新列时它不起作用?

注意:我知道最后一行会产生警告。所以我也尝试了下面的方法,但它没有产生 datetime64[D]

newcol = df2['date'].values.astype('datetime64[D]')
df2.assign(date = newcol)

最佳答案

Jeff Reback, Pandas 开发人员,wrote the following in 2014 (我认为它仍然有效)

We don't allow direct conversions because its simply too complicatedto keep anything other than datetime64[ns] internally (nor necessaryat all). It could be done, but not very useful IMHO.

This is currently NotImplemented, but is very straightforward to do.

因此,可能无法将数据帧列作为 datetime64[D],只能作为 datetime64[ns]

如果需要该列,请使用 .values 返回该列的 Numpy 表示形式并使用它,如下所示

dates = df['date'].values.astype('datetime64[D]') 

关于python - 创建新列时日期转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50474488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com