Python:datetime64 范围问题

标签 python numpy pandas

我试图在两个时间间隔之间有一个秒向量:

import numpy as np
import pandas as pd    
date="2011-01-10"
start=np.datetime64(date+'T09:30:00')
end=np.datetime64(date+'T16:00:00')
range = pd.date_range(start, end, freq='S')

出于某种原因,当我打印范围时,我得到:

[2011-01-10 17:30:00, ..., 2011-01-11 00:00:00]

所以长度是 23401,这是我想要的,但绝对不是正确的时间间隔。这是为什么?

此外,如果我有一个 DataFrame df,其中有一列 datetime64 格式,如下所示:

Time
15:59:57.887529007
15:59:57.805383290

一旦我解决了上面的问题,我可以做以下事情吗:

data = df.reindex(df.Time + range) data = data.ffill() ??

我需要执行建议的确切步骤 here datetime64 格式除外。可能吗?

最佳答案

似乎 pandas date_range 正在删除时区(看起来像一个错误,我认为它已经提交...),您可以使用时间戳而不是 datetime64 来解决这个问题:

In [11]: start = pd.Timestamp(date+'T09:30:00')

In [12]: end = pd.Timestamp(date+'T16:00:00')

In [13]: pd.date_range(start, end, freq='S')
Out[13]: 
<class 'pandas.tseries.index.DatetimeIndex'>
[2011-01-10 09:30:00, ..., 2011-01-10 16:00:00]
Length: 23401, Freq: S, Timezone: None

注意:要查看时区,您使用的是 UTC-8,即 14:00 + 8:00 == 00:00(第二天)。

关于Python:datetime64 范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22239570/

相关文章:

python - datetime64[ns] 到 Pandas 中的时间戳字符串

python - 在 virtualenv 中运行 pytest 时导入错误

python - 准确率等于 0 CNN Python Keras

python - 如何使用python将数据快速加载到内存中?

python - 将 dask 系列连接到数据帧时出错

python - Pandas 如何将每个 id 的月份值相加

python - Tensorflow仅初始化特定范围

python - 在numpy数组中查找大量满足条件的连续值

python - 将字符串响应转换为 json 或列表

python - 如何访问 numpy 默认全局随机数生成器