python - DatetimeIndex 偏移量

标签 python pandas

我有一个数据框,使用以下代码生成:

time_index = pd.date_range(start=datetime(2013, 1, 1, 3),
                       end=datetime(2013, 1, 2, 2, 59),
                       freq='5T')
grid_columns = [u'in_brd', u'in_alt', u'out_brd', u'out_alt']  
grid_proto = pd.DataFrame(index=time_index, columns=grid_columns)

我还向这个数据框添加了一些数据。

当我尝试在基本数据帧中使用 int 偏移量浏览索引时,我得到了正确的一切:

In[152]: grid_proto.index[0] + 1
Out[152]: Timestamp('2013-01-01 03:05:00', tz=None)

但是如果我尝试使用某种切片,我会得到一个错误:

In[153]: z = grid_proto[pd.notnull(x.in_brd)]
In[154]: z.index[0] + 1
Traceback (most recent call last):

File "<ipython-input-151-3ce8a4e5e2d6>", line 1, in <module>
z.index[0] + 1

File "tslib.pyx", line 664, in pandas.tslib._Timestamp.__add__ (pandas\tslib.c:12372)

ValueError: Cannot add integral value to Timestamp without offset.

我知道这是因为在第一种情况下我使用指向 DatetimeIndex 元素的链接而不是标量。在第二种情况下,我得到第一个索引元素的精确标量 Timestamp 值。我说得对吗?

如何正确处理这个offset? (我需要浏览这样的切片)

最佳答案

原因是在第一种情况下,您有一个频率为 5 分钟的常规 DatetimeIndex。所以整数 1 将被解释为频率的一个单位(5 分钟)。
而在第二种情况下,由于切片,您不再有常规时间序列,并且 DatetimeIndex 不再有频率(z.index.freq 将给出 None,而 grid_proto .index.freq 将给出 5 分钟)。

要解决这个问题,您可以明确地添加 5 分钟:

In [22]: import datetime as dt

In [23]: z.index[0] + dt.timedelta(minutes=5)
Out[23]: Timestamp('2013-01-01 03:05:00', tz=None)

或者您可以添加 pd.DateOffset(minutes=5)(这会产生相同的结果)。

关于python - DatetimeIndex 偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23339993/

相关文章:

javascript - 使用 Django 通过 D3.js 访问 CSV 数据

Python获取下一次发生时间的日期时间

python - 根据索引值和条件语句将行值相加

python - XLSX Writer Python- 3 以数字为中点的色标

python - 根据数值有条件创建数据框列

python - 将一个 pandas DataFrame 的副本合并到另一个 DataFrame 的每一行中?

python - 如何在 python 中同时执行批量请求?

Python:使用多处理模块作为可能的解决方案来提高我的功能的速度

python - Pandas 设置多行数据框

python - 替换缺失值和不稳定值,Pythons