我试图基于另一个数据帧生成一个数据帧(或序列),并使用另一个序列从第一帧中选择一个与列不同的列。在下面的简化示例中,我希望前三行的'a'中的frame1值,最后两行(picked_values系列)中的'b'。

frame1=pd.DataFrame(np.random.randn(10).reshape(5,2),index=range(5),columns=['a','b'])
picked_values=pd.Series(['a','a','a','b','b'])


框架1

    a           b
0   0.283519    1.462209
1   -0.352342   1.254098
2   0.731701    0.236017
3   0.022217    -1.469342
4   0.386000    -0.706614


尝试进入该系列:

0   0.283519
1   -0.352342
2   0.731701
3   -1.469342
4   -0.706614


我希望values[picked_values]可以工作,但是最后只有五列。

在实际的示例中,picked_values更大并且可以计算出来。

感谢您的时间。

最佳答案

使用df.lookup

pd.Series(frame1.lookup(picked_values.index,picked_values))




0    0.283519
1   -0.352342
2    0.731701
3   -1.469342
4   -0.706614
dtype: float64

07-28 07:51