過去の株式取引のデータフレームがあります。フレームには ['ticker', 'date', 'cusip', 'profit', 'security_type'] のような列があります。最初に:
trades['cusip'] = np.nan
trades['security_type'] = np.nan
['ticker', 'cusip', 'date', 'name', 'security_type', 'primary_exchange'] のような列を持つフレームにロードできる履歴構成ファイルがあります。
config の cusip と security_type で取引フレームを更新したいと思いますが、ティッカーと日付が一致する場合のみです。
私は次のようなことができると思いました:
pd.merge(trades, config, on=['ticker', 'date'], how='left')
しかし、それは列を更新しません。構成列を取引に追加するだけです。
以下は機能しますが、もっと良い方法が必要だと思います。そうでない場合は、おそらくパンダの外で行います。
for date in trades['date'].unique():
config = get_config_file_as_df(date)
## config['date'] == date
for ticker in trades['ticker'][trades['date'] == date]:
trades['cusip'][
(trades['ticker'] == ticker)
& (trades['date'] == date)
] \
= config['cusip'][config['ticker'] == ticker].values[0]
trades['security_type'][
(trades['ticker'] == ticker)
& (trades['date'] == date)
] \
= config['security_type'][config['ticker'] == ticker].values[0]