如何通过一系列列名从数据框中 select 值?

How to select values from a dataframe by a series of column names?

我有一个数据框df:

    A   B
0   1   4
1   2   5
2   3   6

还有一个系列s

0    A
1    B
2    A

现在我想从 df 中选择列名在 s 中的值。预期结果是:

0    1  <- from column A
1    5  <- from column B
2    3  <- from column A

我怎样才能有效地完成这项工作?

使用 Index.get_indexer 索引 Series 和 select 值 2d array 中的 numpy 索引:

a = df.to_numpy()
b = a[np.arange(len(df)), df.columns.get_indexer(s)]
print (b)
[1 5 3]

s1 = pd.Series(b, s.index)
print (s1)
0    1
1    5
2    3
dtype: int64