【问题标题】:Finding the index of a date in a DateTime object python在 DateTime 对象 python 中查找日期的索引
【发布时间】:2018-10-12 12:26:15
【问题描述】:

我有一个列表,其中包含我使用以下方法创建的日期:

dates_list = pd.date_range(startdate, num_of_periods, freq = 'MS')

^将日期范围存储在dates_list

如果我执行 print(dates_list),这将正确返回我的每月日期列表。

我想要做的是在给定范围内的特定日期寻找索引号。我试过了:

dates_list.index(call_date)

^^其中call_date是我试图查找索引号的日期

我收到一条错误消息,内容如下:

TypeError: 'DatetimeIndex' object is not callable

如果我在更简单的列表上尝试相同的命令, 即:simple_list = ['cheese', 'banana', 'mushroom', 'apple' ...] simple_list.index('banana') 它返回 1

如何从日期列表中获取索引值?有什么我必须做的不同的事情吗?

任何反馈都将不胜感激。谢谢你。

【问题讨论】:

    标签: python list pandas date indexing


    【解决方案1】:

    你有一个DatetimeIndex 对象,而不是一个列表。您可以通过打印type(dates_list) 来确认这一点。 DatetimeIndex 对象没有 index 方法。

    您可以手动检索索引,如下所示:

    dates_list = pd.date_range(start=pd.Timestamp('now').normalize(), periods=10, freq='D')
    
    print(dates_list)
    
    # DatetimeIndex(['2018-05-02', '2018-05-03', '2018-05-04', '2018-05-05',
    #                '2018-05-06', '2018-05-07', '2018-05-08', '2018-05-09',
    #                '2018-05-10', '2018-05-11'],
    #               dtype='datetime64[ns]', freq='D')
    
    res = (dates_list == pd.Timestamp('2018-05-04')).argmax()
    
    # 2
    

    或者,您可以使用生成器。此方法仅适用于您认为所需日期接近 DatetimeIndex 开头的较大范围。

    x = pd.Timestamp('2018-05-04')
    res = next((i for i, j in enumerate(dates_list) if j == x), None)
    

    【讨论】:

      猜你喜欢
      • 2021-10-29
      • 1970-01-01
      • 2020-03-28
      • 2017-10-06
      • 2016-04-26
      • 1970-01-01
      • 2021-05-01
      • 2013-07-06
      相关资源
      最近更新 更多