189 votes

Fusion de Pandas - Comment éviter de dupliquer des colonnes

Je tente une fusion entre deux data frames. Chaque data frame a deux niveaux d'index (date, cusip). Dans les colonnes, certaines colonnes correspondent entre les deux (devise, date ajustée) par exemple.

Quel est le meilleur moyen de fusionner ceux-ci par index, mais sans prendre deux copies de la devise et de la date ajustée.

Chaque data frame a 90 colonnes, donc j'essaie d'éviter d'écrire tout à la main.

df:                 currency  adj_date   data_col1 ...
date        cusip
2012-01-01  XSDP      USD      2012-01-03   0.45
...

df2:                currency  adj_date   data_col2 ...
date        cusip
2012-01-01  XSDP      USD      2012-01-03   0.45
...

Si je fais :

dfNew = merge(df, df2, left_index=True, right_index=True, how='outer')

Je reçois

dfNew:              currency_x  adj_date_x   data_col2 ... currency_y adj_date_y
date        cusip
2012-01-01  XSDP      USD      2012-01-03   0.45             USD         2012-01-03

Merci! ...

0voto

Wim Yedema Points 1

Si vous fusionnez sur des colonnes arbitraires et que vous ne voulez pas conserver la clé droite, ceci fera l'affaire:

mrg = pd.merge(a, b, how="left", left_on="A_KEY", right_on="B_KEY")
mrg.drop(columns=b.columns.difference(cols_to_use))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X