Je souhaite créer une colonne avec des données d'un autre dataframe basé sur un index.
Par exemple, j'ai un dataframe ci-dessous:
['M','M','M','f','M','f','M','M','f','M']
En utilisant ces deux dataframe, Je veux créer une colonne dans df1 appelée «gender» et obtenir les données de df2 en fonction de son index. Donc ma colonne 'gender' dans df1 ressemblera à ceci:
import numpy as np import pandas as pd df1={'id':[1,1,1,3,5,6,7,8,9,10], 'name':['a','a','a','c','e','f','g','h','i','j']} df2 = {'id':[1,2,3,4,5,6,7,8,9,10], 'age':[21,11,45,11,56,22,26,26,17,32], 'gender':['M','M','f','f','M','f','M','M','f','M']} df1 = pd.DataFrame(df1) df1.set_index('id', inplace = True) df2 = pd.DataFrame(df2) df2.set_index('id', inplace = True)
3 Réponses :
C'est très simple. Faites simplement:
df1['gender'] = df2['gender']
Puisque vous avez déjà défini correctement les index, les pandas feront exactement ce que vous voulez. Essayez et voyez.
Excellent exemple pour montrer comment l'index fonctionne dans l'attribution de colonne
Vous pouvez fusionner votre df1
et df2
sur l'index:
df1.merge(df2, left_index=True, right_index=True) name age gender id 1 a 21 M 1 a 21 M 1 a 21 M 3 c 45 f 5 e 56 M 6 f 22 f 7 g 26 M 8 h 26 M 9 i 17 f 10 j 32 M
Notez que comment
est 'interne'
par défaut et vous pouvez le changer en 'left'
devrait être nécessaire.
Essayez ceci.
df1.join(df2['gender'])