如何在扩风中使用Pandas日期时间指数

2024-06-28 11:08:34 发布

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

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

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

还有一系列:

^{pr2}$

函数在整个系列中的工作与预期一致:

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

但是当应用于扩展窗口时,我失去了索引的日期时间性质,而不是给出第一个时间戳之后的时间增量,而是得到整数差:

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()会在内部重置索引,但如果是这样,我如何才能获得所需的内容?在

我搜索了“熊猫扩展索引”,找到了一个关于multiple columns的问题, 还有很多,很多都是关于各种各样的重采样,但是没有一个涉及丢失索引信息。在

谢谢。。。在


Tags: theindatetimeindexreturn时间outelse