前提・実現したいこと
現在、PythonのPandasを使用してデータ処理の勉強をしています。
DataFrameのindexをDATETIME(日時)に設定したとき、遡って合計値・平均値を算出したいです。
発生しているエラー
2019-01-21 8:00:00.437313 Traceback (most recent call last): File "backtest.py", line 29, in <module> print(self.f[index-10 : index]) File "pandas\_libs\tslibs\timestamps.pyx", line 298, in pandas._libs.tslibs.timestamps._Timestamp.__sub__ File "pandas\_libs\tslibs\timestamps.pyx", line 269, in pandas._libs.tslibs.timestamps._Timestamp.__add__ ValueError: Cannot add integral value to Timestamp without freq.
該当のソースコード
読み込むCSV
DATETIME,TIMESTAMP,A,B,C 2019-01-21 07:00:01.147163,1548021601.1471784,386008.0,0.01,1.05635978 2019-01-21 07:00:02.503894,1548021602.50391,386010.0,0.541,0.9697999999999999 2019-01-21 07:00:03.892234,1548021603.8922503,385986.0,0.03,0.03 2019-01-21 07:00:05.273867,1548021605.2738833,385992.0,0.01,0.28939992 2019-01-21 07:00:06.639722,1548021606.6397378,385997.0,0.01,0.57442164 2019-01-21 07:00:07.960864,1548021607.9608808,385997.0,0.41000000000000003 2019-01-21 07:00:09.457629,1548021609.457645,386032.0,1.6560718500000002 2019-01-21 07:00:10.816018,1548021610.8160346,386030.0,0.01,0.3012241 (中略) 2019-01-21 11:00:51.066049,1548036051.0660646,385504.0,0.41000000000000003,0.066 2019-01-21 11:00:52.389939,1548036052.3899548,385503.0,0.8,0.030100000000000002 2019-01-21 11:00:53.747384,1548036053.7473993,385488.0,0.13912297,0.32 2019-01-21 11:00:55.078652,1548036055.0786674,385479.0,0,0.113317 2019-01-21 11:00:56.451129,1548036056.4511445,385477.0,0.34800000000000003,0.57 2019-01-21 11:00:57.791441,1548036057.7914567,385475.0,0,0.05 2019-01-21 11:00:59.187676,1548036059.1876915,385475.0,0,0.01
Python3
1import pandas as pd 2 3#データ取得期間指定期間指定(yyyy-mm-dd hh:mm:ss) 4fro = '2019-1-21 8:00' 5to = '2019-1-21 9:00' 6 7def search_record(): 8 9 #csv読み込み 10 f = pd.read_csv('test.txt') 11 12 #DATETIMEの列をTimestamp型に変換して代入 13 f['DATETIME'] = pd.to_datetime(f['DATETIME']) 14 #DATETIMEをインデックスに設定 15 f.set_index('DATETIME', inplace = True) 16 17 #全カラム抜き出し 18 df = f[fro : to] 19 20if __name__ == '__main__': 21 #指定期間のデータ抜出 22 search_record() 23 24 #抜き出したデータを一行ごとに処理するためループにかける 25 for index, row in df.iterrows(): 26 #現在のindexから10行上までのレコードのB列の合計・平均をどうにかして出したい 27 print(f[index-10 : index])
現在のindexから10行遡った分のB列の・合計・平均を算出するには、どのようにすればよろしいでしょうか。
補足情報(FW/ツールのバージョンなど)
AWS Cloud9
Python 3.7.0