您可以使用求和和二进制搜索解决大多数此类问题。
from datetime import timedeltadef msum(s, lag_in_ms): lag = s.index - timedelta(milliseconds=lag_in_ms) inds = np.searchsorted(s.index.astype(np.int64), lag.astype(np.int64)) cs = s.cumsum() return pd.Series(cs.values - cs[inds].values + s[inds].values, index=s.index)res = msum(ts, 100)print pd.Dataframe({'a': ts, 'a_msum_100': res}) a a_msum_1002013-02-01 09:00:00.073479 552013-02-01 09:00:00.083717 8 132013-02-01 09:00:00.162707 1 142013-02-01 09:00:00.171809 6 202013-02-01 09:00:00.240111 7 142013-02-01 09:00:00.258455 0 142013-02-01 09:00:00.336564 292013-02-01 09:00:00.536416 332013-02-01 09:00:00.632439 472013-02-01 09:00:00.789746 99[10 rows x 2 columns]您需要一种处理NaN的方法,并且取决于您的应用程序,您可能需要延迟时间前后的主要值(即,使用kdb + bin与np.searchsorted之间的差异)。
希望这可以帮助。



