PyTablesを使用して作成されたHDF5ファイルとして毎日の株式データがあります。行のグループを取得し、それを配列として処理してから、PyTablesを使用してディスクに書き戻します(行を更新します)。私はこれをきれいに行う方法を見つけることができませんでした。これを達成するための最良の方法を教えてください。
私のデータ:
Symbol, date, price, var1, var2
abcd, 1, 2.5, 12, 12.5
abcd, 2, 2.6, 11, 10.2
abcd, 3, 2.45, 11, 10.3
defg, 1,12.34, 19.1, 18.1
defg, 2, 11.90, 19.5, 18.2
defg, 3, 11.75, 21, 20.9
defg, 4, 11.74, 22.2, 21.4
各シンボルに対応する行を配列として読み取り、処理を実行して、フィールドvar1とvar2を更新したいと思います。私はすべての記号を事前に知っているので、それらをループすることができます。私はこのようなことを試みました:
rows_array = [row.fetch_all_fields() for row in table.where('Symbol == "abcd"')]
rows_arrayを別の関数に渡して、var1とvar2の値を計算し、レコードごとに更新したいと思います。var1、var2は移動平均に似ているため、イテレータ内でそれらを計算することはできません。したがって、行のセット全体を配列にする必要があることに注意してください。
rows_arrayを使用して必要なものを計算した後、それをデータに書き戻す方法、つまり、新しい計算値で行を更新する方法がわかりません。テーブル全体を更新するとき、私はこれを使用します:
table.cols.var1[:] = calc_something(rows_array)
ただし、テーブルの一部だけを更新したい場合は、それを行うのが最善の方法ではありません。'where'条件を再実行して、計算に基づいて各行を更新できると思いますが、テーブルを再スキャンするのは時間の無駄のようです。
あなたの提案は大歓迎です...
ありがとう、-e