2

タイム スタンプが付けられ、間隔が不規則で、時間インデックスが重複している株式の価格と出来高に関するデータがあります。このようなデータの簡単な例は次のとおりです。

                       unixtime    price  amount
2011-04-17 01:03:11  1303002191  1.02570       1
2011-04-17 01:03:14  1303002194  1.02570       1
2011-04-17 01:03:17  1303002197  1.02570       1
2011-04-17 01:03:19  1303002199  1.02570       1
2011-04-17 01:03:21  1303002201  1.02570       1
2011-04-17 01:03:23  1303002203  1.02570       1
2011-04-17 01:03:37  1303002217  1.02570       1
2011-04-17 01:03:45  1303002225  1.02570       1
2011-04-17 01:03:57  1303002237  1.02570       1
2011-04-17 01:04:42  1303002282  1.02570       1
2011-04-17 01:04:55  1303002295  1.02570       1
2011-04-17 01:05:00  1303002300  1.02570       1
2011-04-17 01:05:03  1303002303  1.02570       1
2011-04-17 01:05:11  1303002311  1.02570       1
2011-04-17 01:05:24  1303002324  1.02570       1
2011-04-17 01:05:34  1303002334  1.02570       1
2011-04-17 01:05:45  1303002345  1.02570       1
2011-04-17 01:05:56  1303002356  1.02570       1
2011-04-17 01:06:11  1303002371  1.02570       1
2011-04-17 01:06:25  1303002385  1.02570       1
2011-04-17 01:06:28  1303002388  1.02570       1
2011-04-17 01:06:31  1303002391  1.02570       1
2011-04-17 01:06:33  1303002393  1.02570       1
2011-04-17 01:06:34  1303002394  1.02560       1
2011-04-17 01:06:44  1303002404  1.02560       1
2011-04-17 01:07:02  1303002422  1.02560       2
2011-04-17 01:07:21  1303002441  1.02563       2
2011-04-17 01:07:46  1303002466  1.02563       2
2011-04-17 01:08:24  1303002504  1.02563       2
2011-04-17 01:09:55  1303002595  1.02570       2
2011-04-17 01:10:50  1303002650  1.02570       2
2011-04-17 01:11:02  1303002662  1.02570       2

私が欲しいのは、この場合、等間隔のシリーズであり、ボリューム (金額) で加重された価格平均で 30 秒の頻度と言えます。how = "last" と "sum" をそれぞれ使用して、等間隔の 30 秒間隔とその特定の間隔の最終価格、およびその間隔中の合計金額 (ボリューム) を取得できました。しかし、30 秒間隔の出来高加重価格を取得するためにリサンプリングを行うにはどうすればよいでしょうか?

4

1 に答える 1

4

販売合計の新しい列を作成し、2 つのリサンプルを行うと思います。

In [11]: df['total'] = df['price'] * df['amount']

In [12]: df.total.resample('30S', how='sum') / df.amount.resample('30S', how='sum')
Out[12]:
2011-04-17 01:03:00    1.025700
2011-04-17 01:03:30    1.025700
2011-04-17 01:04:00         NaN
2011-04-17 01:04:30    1.025700
2011-04-17 01:05:00    1.025700
2011-04-17 01:05:30    1.025700
2011-04-17 01:06:00    1.025700
2011-04-17 01:06:30    1.025650
2011-04-17 01:07:00    1.025615
2011-04-17 01:07:30    1.025630
2011-04-17 01:08:00    1.025630
2011-04-17 01:08:30         NaN
2011-04-17 01:09:00         NaN
2011-04-17 01:09:30    1.025700
2011-04-17 01:10:00         NaN
2011-04-17 01:10:30    1.025700
2011-04-17 01:11:00    1.025700
Freq: 30S, dtype: float64

これがあなたが望むものだと仮定すると...

于 2013-06-05T20:59:11.683 に答える