Je voudrais attribuer les valeurs de colonne sélectionnées d'un bloc de données à un autre bloc de données.

data = [['Math',87],['Geography',93],['Physics',72],['Geometry',75],['Astronomy',81],['English',94],['History',84]]
df = pd.DataFrame(data,columns=['Subjects','Grade'])
df

Subjects  Grade
Math         87
Geography    93
Physics      72
Geometry     75
Astronomy    81
English      94
History      84

J'ai une autre trame de données:

data2 = [['Astronomy'],['Geography'],['Geometry'],['History']]
df2 = pd.DataFrame(data2,columns=['Subjects_selected'])

df2

Subjects_selected
Astronomy
Geography
Geometry
History

Comment puis-je attribuer automatiquement les valeurs de la colonne Grade au df2 en tant que nouveaux éléments de colonne? Je souhaite obtenir:

Subjects_selected   Retrieved_Values
Astronomy                       81
Geography                       93
Geometry                        75
History                         84
2
user_01 17 mars 2019 à 03:48

2 réponses

Meilleure réponse

Utilisez Series.map par Series créé par DataFrame.set_index et en sélectionnant la colonne Grade :

df2['Retrieved_Values'] = df2['Subjects_selected'].map(df.set_index('Subjects')['Grade'])
print (df2)
  Subjects_selected  Retrieved_Values
0         Astronomy                81
1         Geography                93
2          Geometry                75
3           History                84

Une autre solution avec DataFrame.merge et renommez les colonnes :

d = {'Subjects':'Subjects_selected','Grade':'Retrieved_Values'}
df2 = df2.merge(df.rename(columns=d), how='left')

print (df2)
  Subjects_selected  Retrieved_Values
0         Astronomy                81
1         Geography                93
2          Geometry                75
3           History                84
2
jezrael 17 mars 2019 à 00:50

Puisque vous avez mentionné sélectionner, j'utiliserai isin, qui est « plus comme sélectionner »

df.loc[df.Subjects.isin(df2.Subjects_selected)]
Out[93]: 
    Subjects  Grade
1  Geography     93
3   Geometry     75
4  Astronomy     81
6    History     84
1
BENY 17 mars 2019 à 01:54