(続)pandas.DataFrame.resampleを使用して価格を異なるタイムフレームの足へ変換する

前回「pandas.DataFrame.resampleを使用して価格を異なるタイムフレームの足へ変換する」の続き。

前回は総じて次のコードで時間足を作成した。

#coding:utf-8
import csv 
import pandas as pd
import numpy as np

filename = "USDJPY.csv"
df = pd.read_csv(filename,
                   sep=',',
                   parse_dates=True,
                   float_precision = "high")

#IndexをdateTimeIndexに変換
dateTimeIndex = pd.DatetimeIndex(df['Time'])
df.index = dateTimeIndex

#Resampling
ohlcDataFrame = df["2016/09/07"].resample("H")

print ohlcDataFrame

出力結果は下記だった。

Open High Low Close
2016-09-07 06:00:00 102.056471 102.080221 101.056471 102.080134
2016-09-07 07:00:00 102.098426 102.118429 101.098426 102.118429
2016-09-07 08:00:00 101.810564 101.830572 100.810564 101.830572
2016-09-07 09:00:00 101.541465 101.561465 100.541465 101.561465
・・・・・・・・・・・・・・

そして、これらの値は各カラムの該当時間帯データの平均だった。
ここまでが前回の復習。

今回は、次が目的。

・Openは該当時間帯の最初のデータとする
・Closeは該当時間帯の最後のデータとする
・Highは最大値とする
・Lowは最小値とする

ただ、結論から言って、OpenとCloseについては、現時点で方法が不明。
High、Lowについてメモする。

次のようにHighについては、resampleメソッドの引数で「how="max"」として最大値を取得し、Lowについては「how="min"」として最小値を取得すれば良い。

# HighとLowを取得する
resultOHLC = pd.DataFrame()
resultOHLC["High"] = df["2016/09/07"]["High"].resample("H", how="max", closed="left", label="left", fill_method="ffill")
resultOHLC["Low"] = df["2016/09/07"]["Low"].resample("H", how="min", closed="left", label="left", fill_method="ffill")

print resultOHLC

結果は下記。

High Low
2016-09-07 06:00:00 102.144 101.005
2016-09-07 07:00:00 102.149 101.036
2016-09-07 08:00:00 102.126 100.245
2016-09-07 09:00:00 101.700 100.356
2016-09-07 10:00:00 101.595 100.206
2016-09-07 11:00:00 101.552 100.330
・・・・・・・・・

なお、resample関数のlabel="left"としているのでデータは「2016-09-07 06:00:00」から開始。
label="right"とすると、「2016-09-07 07:00:00」から開始となる。
これと同様に、Openについてはleftの値を、Closeについてはrightの値を選ぶオプションがあればいいのだが・・・。