【问题标题】:Getting the index of a timestamp element in a pandas data frame获取熊猫数据框中时间戳元素的索引
【发布时间】:2021-03-17 13:45:21
【问题描述】:

我创建了一个 pandas 数据框,如下所示:

dates = pd.date_range('12-01-2020','12-10-2020')
my_df = pd.DataFrame(dates, columns = ['Date'])

所以这给了

        Date
0 2020-12-01
1 2020-12-02
2 2020-12-03
3 2020-12-04
4 2020-12-05
5 2020-12-06
6 2020-12-07
7 2020-12-08
8 2020-12-09
9 2020-12-10

我的问题很基础:返回给定日期索引的正确函数是什么?我试过my_df['Date'].index('2020-12-05'),期望得到4,但我得到了以下错误:'RangeIndex'对象不可调用。我也试过了

d = pd.TimeStamp('12-05-2020' + '00:00:00') 
my_df['Date'].index(d)

但我遇到了同样的错误...我很困惑,因为我在类似情况下成功使用了 .index,例如在带有整数的列表上。任何帮助将不胜感激。

【问题讨论】:

    标签: python pandas dataframe indexing timestamp


    【解决方案1】:

    您也可以使用query 而无需重置索引

    my_df.query("Date == '2020-12-05'").index.values[0]
    

    或者如果您想将值分配给搜索:

    d = pd.to_datetime('12-05-2020') 
    my_df.query("Date == @d").index.values[0]
    

    或不带locquery

    my_df[my_df.Date == '12-05-2020'].index.values[0]
    

    你的答案:

    4
    

    【讨论】:

    • 谢谢,这行得通。但是有没有使用 .index 或 .loc 的替代方式,但不涉及重置索引?
    • 我的回答没有重置索引
    • 谢谢,我最喜欢第三个选项 :) 在我看来这是一种更自然的获取索引的方式。
    • 我认为你不需要.values,你可以直接索引到索引中
    【解决方案2】:

    你可以重置索引

    my_df.reset_index().loc[my_df.Date == '2020-12-05', 'index']
    

    或获取标量

    my_df.reset_index().loc[my_df.Date == '2020-12-05', 'index'].values[0]
    

    【讨论】:

    • 这看起来很麻烦...一定有更简单的方法不需要reset_index...
    猜你喜欢
    • 2015-04-15
    • 2023-04-07
    • 1970-01-01
    • 2021-07-28
    • 2021-01-19
    • 2019-12-02
    • 2018-10-31
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多