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'])