我希望将数据帧的选定列值分配给另一个数据帧。
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如何自动将品位列值作为新列元素分配给df2?我希望得到:
Subjects_selected Retrieved_Values
Astronomy 81
Geography 93
Geometry 75
History 84发布于 2019-03-17 00:50:25
使用Series.map by Series创建DataFrame.set_index并选择列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发布于 2019-03-17 01:54:04
既然您提到了select,我将使用isin,它更像选择
df.loc[df.Subjects.isin(df2.Subjects_selected)]
Out[93]:
Subjects Grade
1 Geography 93
3 Geometry 75
4 Astronomy 81
6 History 84https://stackoverflow.com/questions/55202909
复制相似问题