【问题标题】: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])

【问题讨论】:

    标签: python pandas indexing slice data-wrangling


    【解决方案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
    

    【讨论】:

    • 谢谢!应该这样做。
    猜你喜欢
    • 1970-01-01
    • 2020-06-03
    • 2017-11-03
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    相关资源
    最近更新 更多