2012-05-31 13 views
6

パンダ0.8のTimeSeriesの時間加重平均を計算する最も効率的な方法は何ですか?例えば、以下の作成したとして、私はdf.y - df.xの時間加重平均をしたいと言う:パンダでの時間加重平均

import pandas 
import numpy as np 
times = np.datetime64('2012-05-31 14:00') + np.timedelta64(1, 'ms') * np.cumsum(10**3 * np.random.exponential(size=10**6)) 
x = np.random.normal(size=10**6) 
y = np.random.normal(size=10**6) 
df = pandas.DataFrame({'x': x, 'y': y}, index=times) 

私は、この操作のような感じを行うのは非常に簡単なはずですが、私が試したすべてのものは、いくつかの汚いと遅い型変換を必要とします。

答えて

3

df.indexを整数に変換して平均を計算することができます。 int64値の配列を返すショートカットasi8があります。

+4

ありがとうございました!私は時間の長さで値を重み付けしたいので、np.average((df.y - df.x)[: - 1]、weights = np.diff(df.index.asi8)) ' – user2303