remplacer les valeurs des colonnes dans un dataframe par des valeurs d'un autre dataframe
J'ai deux dataframes , le premier a 1000 lignes et ressemble:
Date Group Family Bonus
2011-06-09 tri23_1 Laavin 456
2011-07-09 hsgç_T2 Grendy 679
2011-09-10 bbbj-1Y_jn Fantol 431
2011-11-02 hsgç_T2 Gondow 569
La colonne Group
a des valeurs différentes, parfois répété, mais en général environ 50 valeurs uniques.
La deuxième dataframe contient toutes ces 50 valeurs uniques (50 lignes) et les hôtels, qui sont associés à ces valeurs:
Group Hotel
tri23_1 Jamel
hsgç_T2 Frank
bbbj-1Y_jn Luxy
mlkl_781 Grand Hotel
vchs_94 Vancouver
Mon but est de remplacer la valeur indiquée dans la colonne Group
de la première dataframe par les valeurs correspondantes de la colonne Hotel
de la deuxième dataframe/ou la création de la colonne Hotel
avec les valeurs correspondantes. Quand j'ai essayer de le faire juste par assignation comme
df1.loc[(df1.Group=df2.Group), 'Hotel']=df2.Hotel
J'ai une erreur que la dataframes ne sont pas de taille égale, de sorte que la comparaison n'est pas possible
Vous devez vous connecter pour publier un commentaire.
Si vous définissez l'index pour le "Groupe" de la colonne de l'autre df ensuite, vous pouvez remplacer l'aide de
map
sur votre original df 'Groupe' colonne:merge
notez que quelle que soit la méthode, si vous avez des entrées en double, alors vous devez les supprimer donc quelque chose commedf1.merge(df[['Group']].drop_duplicates(), on=some_col, how='left)
Vous devriez être en mesure d'en déduire comment pour ce faire, le problème avec doublons n'est pas différent si c'était un DB rejoindreVous pouvez également créer un dictionnaire et d'utilisation s'appliquent:
suffit d'utiliser les pandas rejoindre, vous pouvez vous référer au détail lien: http://pandas.pydata.org/pandas-docs/stable/merging.html
Colonnes dans les pandas DataFrames sont juste de la Série. Faire de la DataFrames (ou DataFrame et de la Série, comme illustré ici) partagent le même indice, de sorte que la cession peut se produire à partir de la Série pour le DataFrame:
Avis que l'index des deux est "Groupe", qui permet à la cession.
Si vous affectez une indexé Série à un DataFrame de la colonne, la cession des œuvres. Notez que cela fonctionne malgré l'existence de dupliquer les valeurs du groupe dans le df. Cela ne fonctionnerait pas si il y a duplication des valeurs de l'indice (avec différentes valeurs de données correspondantes) dans le hotel_groups de la Série (par exemple, s'il y avait deux entrées pour la valeur de l'indice de hsgc_T2, le premier avec la valeur de données de Frank et la deuxième avec les données de la valeur Luxy qui est affecté par df['hôtel'] (non pas que cela devrait jamais se produire dans votre exemple). Cela ne fonctionne pas car il n'y aurait pas un moyen de connaître la valeur à attribuer la indexé DataFrame de la colonne.