我有一个历史股票交易的数据框。该框架具有 ['ticker'、'date'、'cusip'、'profit'、'security_type'] 等列。最初:
trades['cusip'] = np.nan
trades['security_type'] = np.nan
我有历史配置文件,我可以将它们加载到具有 ['ticker'、'cusip'、'date'、'name'、'security_type'、'primary_exchange'] 等列的框架中。
我想使用配置中的 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]