如何使用一系列列名从 pandas 数据框中获取一个系列?
How to get a series from a pandas dataframe using a series of column names?
我有一个包含数字数据的 pandas 数据框 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
,其中包含对应于 (index, value)
对的 df
值14=] 作为他们在 df
中的 .loc()
标识符,即
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
我有一个包含数字数据的 pandas 数据框 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
,其中包含对应于 (index, value)
对的 df
值14=] 作为他们在 df
中的 .loc()
标识符,即
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