相关疑难解决方法(0)

滑动窗户上的熊猫滚动计算(间隔不均匀)

考虑一下你有一些不均匀的时间序列数据:

import pandas as pd
import random as randy
ts = pd.Series(range(1000),index=randy.sample(pd.date_range('2013-02-01 09:00:00.000000',periods=1e6,freq='U'),1000)).sort_index()
print ts.head()


2013-02-01 09:00:00.002895    995
2013-02-01 09:00:00.003765    499
2013-02-01 09:00:00.003838    797
2013-02-01 09:00:00.004727    295
2013-02-01 09:00:00.006287    253
Run Code Online (Sandbox Code Playgroud)

假设我想在1毫秒的窗口上进行滚动总和来得到这个:

2013-02-01 09:00:00.002895    995
2013-02-01 09:00:00.003765    499 + 995
2013-02-01 09:00:00.003838    797 + 499 + 995
2013-02-01 09:00:00.004727    295 + 797 + 499
2013-02-01 09:00:00.006287    253
Run Code Online (Sandbox Code Playgroud)

目前,我把所有东西都重新投入了多头并在cython中完成,但这在纯大熊猫中是否可行?我知道你可以做类似.asfreq('U')之类的东西,然后填充并使用传统的功能,但是一旦你拥有超过玩具的行数,这就无法扩展.

作为参考,这是一个hackish,而不是快速的Cython版本:

%%cython
import numpy as np
cimport cython
cimport numpy as np

ctypedef np.double_t DTYPE_t

def rolling_sum_cython(np.ndarray[long,ndim=1] times, np.ndarray[double,ndim=1] to_add, long window_size):
    cdef …
Run Code Online (Sandbox Code Playgroud)

python pandas

12
推荐指数
2
解决办法
6704
查看次数

标签 统计

pandas ×1

python ×1