Python で小さなプログラムを作成して、株式ポートフォリオを 1 年以上追跡しようとしているので、基本的にすべての売買を登録し、残高を追跡します。注文のリストを調べて、ポートフォリオを保持する Pandas データフレームを更新します。コードはかなりあいまいに見えますが、私は Pandas/numpy にはまったく慣れていません:
orders_book = DataFrame(np.zeros((num_of_days,num_of_companies+1)), ldt_timestamps, columns = book_keys)
for equity_sym in ls_symbols[1:2]:
for trade_date in ldt_timestamps:
if trade_date == ldt_timestamps[0]:
current_number = orders_book.xs(trade_date)[equity_sym]
for transaction in trades:
transaction_date = transaction[0]
transaction_sym = transaction[1]
if ( ( trade_date == transaction_date ) and (equity_sym == transaction_sym ) ):
transaction_order = transaction[2]
transaction_number = transaction[3]
if str(transaction_order) == 'Buy':
current_number += transaction_number
if str(transaction_order) == 'Sell':
current_number -= transaction_number
orders_book.ix[trade_date,equity_sym, current_number] = current_number
[equity_sym] この複雑なループが正常に動作することを実行時に出力して確認したことを納得させるために、コメントを残しておきました (ご覧のとおり、 をorders_book
使用して更新していますset_value
)。ただし、ループが終了すると、単純に試してみると、最初のようprint orders_book['GOOG']
にorders_book
見えます。つまり、ループの前です。何故ですか?助けていただければ幸いです:)
編集: コードは現在変更されており、適切に動作します。これは Panda のせいではなく、コード内の更新/書き込み関数の配置が間違っていました。ありがとうございます!