如何在扩展窗口中使用pandas datetime index

时间:2017-10-12 17:56:06

标签: python pandas datetime

我在使用扩展窗口的自定义转换时遇到问题。我有一个功能:

def minutes_since_previous(x):
    '''given datetime-indexed series x, 
    returns time difference in minutes between the last datetime 
    and the datetime of the previous nonnull value in each column.'''
    x = pd.Series(x)  # assumes aready sorted, else add .sort_index()
    tfinal=x.index[-1]
    allprev = x[:-1].dropna()  #all prev nonnulls. 
    if (len(allprev) > 0):
        tprev = allprev.index[-1]
        return (tfinal - tprev)
    else:
        return np.nan

和一系列:

x
Out[116]:
datetime
2017-06-05 22:01:20.000    81.070099
2017-06-05 22:25:24.235          NaN
2017-06-05 22:33:13.000          NaN
2017-06-05 23:10:06.208          NaN
2017-06-05 23:11:40.437          NaN
2017-06-05 23:30:32.911          NaN
2017-06-06 06:19:41.934          NaN
2017-06-06 06:37:11.432          NaN
2017-06-06 06:41:37.000    93.681000
dtype: float32

该功能在整个系列中按预期工作:

In [117]:
minutes_since_previous(x)
Out[117]:
Timedelta('0 days 08:40:17')

但是当应用于扩展窗口时,我失去了索引的日期时间性质,而不是从第一个时间戳开始给出timedeltas,我只是得到整数差异:

In [118]:
x.expanding().apply(minutes_since_previous)
Out[118]:
datetime
2017-06-05 22:01:20.000    NaN
2017-06-05 22:25:24.235    1.0
2017-06-05 22:33:13.000    2.0
2017-06-05 23:10:06.208    3.0
2017-06-05 23:11:40.437    4.0
2017-06-05 23:30:32.911    5.0
2017-06-06 06:19:41.934    6.0
2017-06-06 06:37:11.432    7.0
2017-06-06 06:41:37.000    8.0
dtype: float64

也许.expanding()在内部重置索引,但如果是这样,我怎样才能得到我正在寻找的东西?

我搜索了“pandas expand index”,发现了一个关于multiple columns的问题, 许多,很多都是关于各种重新采样的,但没有一个涉及丢失索引信息。

谢谢...

0 个答案:

没有答案