【问题标题】:Subset a data frame based on index value [duplicate]根据索引值对数据框进行子集[重复]
【发布时间】:2019-02-16 14:01:10
【问题描述】:

我有一个按日期索引的每周股票价格回报数据框,如下所示。

            FTSE_350    SP_500
2005-01-14 -0.004498 -0.001408
2005-01-21  0.001287 -0.014056
2005-01-28  0.011469  0.002988
2005-02-04  0.016406  0.027037
2005-02-11  0.015315  0.001887 

我想返回索引在某个间隔内的行的数据框,假设所有日期都在 2005 年 1 月。我知道我可以通过将索引转换为“日期”列来做到这一点,但是我想知道是否有任何方法可以直接做到这一点。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    是的,比做专栏更简单!

    使用.loc 函数,然后将日期切片,例如:

    print(df.loc['2005-01-01':'2005-01-31'])
    

    输出:

                FTSE_350    SP_500
    2005-01-14 -0.004498 -0.001408
    2005-01-21  0.001287 -0.014056
    2005-01-28  0.011469  0.002988
    

    顺便说一句,如果索引是对象,那么:

    df.index = pd.to_datetime(df.index)
    

    在一切之前。

    正如@Peter 所说,最好的是:

    print(df.loc['2005-01'])
    

    还有输出:

                FTSE_350    SP_500
    2005-01-14 -0.004498 -0.001408
    2005-01-21  0.001287 -0.014056
    2005-01-28  0.011469  0.002988
    

    【讨论】:

    • 不错的答案。也适用:df.loc['2005-01']。如果 OP 中的索引恰好是字符串类型,df.index = pd.to_datetime(df.index) 应该会解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 2013-03-17
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    相关资源
    最近更新 更多