如何使用一系列列名从熊猫数据框中获取系列?

Posted

技术标签:

【中文标题】如何使用一系列列名从熊猫数据框中获取系列?【英文标题】:How to get a series from a pandas dataframe using a series of column names? 【发布时间】:2020-11-25 21:44:39 【问题描述】:

我有一个带有数字数据的 pandas 数据框 df。我还有一个系列 sdf 具有相同的索引和由 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])

如何使用sdf 进行切片并获取另一个系列s1,其中包含与s 中的(index, value) 对相对应的df 值作为df 中的.loc() 标识符,即

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

【问题讨论】:

【参考方案1】:

使用DataFrame.lookup 根据s.indexs 查找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

【讨论】:

谢谢!应该这样做。

以上是关于如何使用一系列列名从熊猫数据框中获取系列?的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫数据框中插入列名? [复制]

如何(重新)命名熊猫数据框中的空列标题而不导出到csv

如何根据不同df中提供的索引值对数据框中的特定列进行求和。返回总和和布尔 T/F

Python:如何从熊猫系列的字典中获取值

如何从一系列数组构造熊猫数据框

在数据框中合并两个熊猫系列而不显式使用键