如何使用一系列列名从熊猫数据框中获取系列?
Posted
技术标签:
【中文标题】如何使用一系列列名从熊猫数据框中获取系列?【英文标题】:How to get a series from a pandas dataframe using a series of column names? 【发布时间】:2020-11-25 21:44:39 【问题描述】:我有一个带有数字数据的 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
,其中包含与s
中的(index, value)
对相对应的df
值作为df
中的.loc()
标识符,即
s1 = pd.Series(index=[0, 1, 2], data=[1, 5, 9])
【问题讨论】:
【参考方案1】:使用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
【讨论】:
谢谢!应该这样做。以上是关于如何使用一系列列名从熊猫数据框中获取系列?的主要内容,如果未能解决你的问题,请参考以下文章