首页 > 解决方案 > 将给定数据框的一列的选定值分配给Python中的另一个数据框

问题描述

我想将数据框的选定列值分配给另一个数据框。

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

我有另一个数据框:

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

df2

Subjects_selected
Astronomy
Geography
Geometry
History

如何自动将 Grade 列值作为新列元素分配给 df2?我希望得到:

Subjects_selected   Retrieved_Values
Astronomy                       81
Geography                       93
Geometry                        75
History                         84

标签: pythonpandasdataframe

解决方案


使用Series.mapby Seriescreated byDataFrame.set_index并选择 column 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

另一个使用DataFrame.merge和重命名列的解决方案:

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

推荐阅读