J'ai un dataframe des trades boursiers historiques. Le cadre contient des colonnes telles que ['ticker', 'date', 'cusip', 'profit', 'security_type']. Dans un premier temps:Mise à jour de pandas DataFrame par clé
trades['cusip'] = np.nan
trades['security_type'] = np.nan
J'ai des fichiers de configuration historiques que je peux charger dans des cadres qui ont des colonnes comme [ 'ticker', 'CUSIP', 'date', 'nom', '-sécurité', 'primary_exchange'].
Je voudrais mettre à jour le cadre des métiers avec le cusip et security_type de config, mais seulement où le ticker et la date correspondent.
Je pensais que je pouvais faire quelque chose comme:
pd.merge(trades, config, on=['ticker', 'date'], how='left')
Mais cela ne met pas à jour les colonnes, il ajoute que les colonnes de configuration aux métiers.
Les travaux suivants, mais je pense qu'il doit y avoir une meilleure façon. Sinon, je vais probablement le faire en dehors des pandas.
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]