Python 如何使用一系列列名从数据帧中获取一系列?

Python 如何使用一系列列名从数据帧中获取一系列?,python,pandas,indexing,slice,data-wrangling,Python,Pandas,Indexing,Slice,Data Wrangling,我有一个带有数字数据的熊猫数据框df。我还有一个系列的s,索引与df相同,值由df列标签组成,例如 import pandas as pd df = pd.DataFrame( index=[0, 1, 2], columns=[0, 1, 2], data=[[1, 2, 3], [4, 5, 6], [7, 8, 9]] ) s = pd.Series(index=[0, 1, 2]), data=[0, 1, 2]) 如何使用s对df进行切片,并获得另一个系列s1,该系列

我有一个带有数字数据的熊猫数据框
df
。我还有一个系列的
s
,索引与
df
相同,值由
df
列标签组成,例如

import pandas as pd
df = pd.DataFrame(
    index=[0, 1, 2], columns=[0, 1, 2],
    data=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
)
s = pd.Series(index=[0, 1, 2]), data=[0, 1, 2])
如何使用
s
df
进行切片,并获得另一个系列
s1
,该系列包含
df
值,该值对应于
s
中的
(索引,值)
对,作为
df
中的
标识符,即

s1 = pd.Series(index=[0, 1, 2], data=[1, 5, 9])

使用
DataFrame.lookup
根据
s.index
s
查找
df
中的值,然后从此查找值创建一个新系列:

s1 = pd.Series(df.lookup(s.index, s), index=s.index)
另一个想法是使用
DataFrame.stack
和使用
DataFrame.loc
索引:

s1 = df.stack().loc[zip(s.index, s)].droplevel(1)
结果:

print(s1)

0    1
1    5
2    9
dtype: int64

谢谢应该这样做。