Est-il possible de ne fusionner que certaines colonnes? J'ai un DataFrame df1 avec les colonnes x, y, z et df2 avec les colonnes x, a, b, c, d, e, f, etc.
Je veux fusionner les deux DataFrames sur x, mais je veux seulement fusionner les colonnes df2.a, df2.b - pas le DataFrame entier.
Le résultat serait un DataFrame avec x, y, z, a, b.
Je pourrais fusionner puis supprimer les colonnes indésirables, mais il semble qu'il existe une meilleure méthode.
Réponses:
Vous pouvez fusionner le sous-DataFrame (avec seulement ces colonnes):
la source
list('xab')
prend chaque élément (lettre) de la chaîne «xab» et le convertit en un élément de liste donclist('xab')
retourne['x', 'a', 'b']
. Cela fonctionne si chaque colonne a une seule lettre comme nom. Dans votre cas, je pense que vous devez faire df1.merge (df2 ['Unique_External_Users'], * other_arguments). ... Vous avez probablement déjà résolu le problème maintenant, en laissant cela aux débutants, comme moiVous voulez utiliser DEUX crochets, donc si vous effectuez une sorte d'action RECHERCHEV:
Cela vous donnera tout dans le df d'origine + ajoutez cette colonne correspondante dans df2 que vous souhaitez rejoindre.
la source
Si vous souhaitez supprimer des colonnes du bloc de données cible, mais que les colonnes sont requises pour la jointure, vous pouvez effectuer les opérations suivantes:
La
.drop('key1')
partie empêchera «key1» d'être conservé dans la trame de données résultante, bien qu'il soit nécessaire de se joindre en premier lieu.la source
KeyError: "['key1'] not found in axis"
Vous pouvez utiliser
.loc
pour sélectionner les colonnes spécifiques avec toutes les lignes, puis les extraire. Un exemple est ci-dessous:Dans cet exemple, vous fusionnez dataframe1 et dataframe2. Vous avez choisi de faire une jointure externe gauche sur «clé». Cependant, pour dataframe2, vous avez spécifié
.iloc
ce qui vous permet de spécifier les lignes et colonnes souhaitées dans un format numérique. En utilisant:
, vous sélectionnez toutes les lignes, mais[0:5]
sélectionne les 5 premières colonnes. Vous pouvez utiliser.loc
pour spécifier par nom, mais si vous traitez avec de longs noms de colonnes, cela.iloc
peut être mieux.la source
.loc
va faire une copie , et sur un gros df ça peut être douloureux. Il peut être préférable de fusionner puis de prendre immédiatement une tranche de colonne dans la même expression.Il s'agit de fusionner les colonnes sélectionnées de deux tables.
Si
table_1
contient dest1_a,t1_b,t1_c..,id,..t1_z
colonnes ettable_2
contient dest2_a, t2_b, t2_c..., id,..t2_z
colonnes, et que seuls t1_a, id, t2_a sont requis dans la table finale, alorsla source