Ce sont mes deux dataframes enregistrées dans deux variables:
> print(df.head())
>
club_name tr_jan tr_dec year
0 ADO Den Haag 1368 1422 2010
1 ADO Den Haag 1455 1477 2011
2 ADO Den Haag 1461 1443 2012
3 ADO Den Haag 1437 1383 2013
4 ADO Den Haag 1386 1422 2014
> print(rankingdf.head())
>
club_name ranking year
0 ADO Den Haag 12 2010
1 ADO Den Haag 13 2011
2 ADO Den Haag 11 2012
3 ADO Den Haag 14 2013
4 ADO Den Haag 17 2014
Je suis en train de fusionner ces deux à l'aide de ce code:
new_df = df.merge(ranking_df, on=['club_name', 'year'], how='left')
Le comment= "gauche" est ajouté car j'ai moins de points de données dans mon ranking_df que dans mon standard df.
Le comportement attendu est comme suit:
> print(new_df.head())
>
club_name tr_jan tr_dec year ranking
0 ADO Den Haag 1368 1422 2010 12
1 ADO Den Haag 1455 1477 2011 13
2 ADO Den Haag 1461 1443 2012 11
3 ADO Den Haag 1437 1383 2013 14
4 ADO Den Haag 1386 1422 2014 17
Mais j'ai cette erreur:
ValueError: Vous essayez de fusionner sur l'objet et le int64 colonnes. Si vous souhaitez poursuivre, vous devez utiliser la mp.concat
Mais je ne souhaite pas utiliser concat depuis que je veux fusionner les arbres qui ne sont pas simplement les ajouter sur.
Un autre comportement qui est bizarre dans mon esprit, c'est que mon code fonctionne si je l'enregistrement de la première df pour .csv et ensuite charger ce .csv dans un dataframe.
Le code pour que:
df = pd.DataFrame(data_points, columns=['club_name', 'tr_jan', 'tr_dec', 'year'])
df.to_csv('preliminary.csv')
df = pd.read_csv('preliminary.csv', index_col=0)
ranking_df = pd.DataFrame(rankings, columns=['club_name', 'ranking', 'year'])
new_df = df.merge(ranking_df, on=['club_name', 'year'], how='left')
Je pense que cela a à voir avec la index_col=0 paramètre. Mais je n'ai aucune idée de le fixer sans avoir à l'enregistrer, il n'importe pas bien, mais c'est le genre de désagrément que j'ai à faire.