gpt4 book ai didi

python - numpy:比较两个日期值返回 TypeError: '>=' 和 'int' 实例之间不支持 'datetime.datetime'

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:47 25 4
gpt4 key购买 nike

我是 python 和 numpy 的新手。在练习时我写了这段代码:

import pandas as pd
import numpy as np
from datetime import datetime, timedelta

date_today = datetime.now()
days = pd.date_range(date_today, date_today + timedelta(7), freq='D')

np.random.seed(seed=1111)
data = np.random.randint(1, high=100, size=len(days))
df = pd.DataFrame({'test': days, 'col2': data})
df = df.set_index('test')
print(df)
dates = np.array(df.index)
print(dates)
start_idx = np.where(dates>=datetime.strptime('2018-01-01', "%Y-%m-%d"))[0][-1]
print(start_idx)

但它给出了以下错误:

    Traceback (most recent call last):
File "C:/Users/mohammadi/Desktop/sampleDF.py", line 15, in <module>
start_idx = np.where(dates>=datetime.strptime('2018-01-01', "%Y-%m-%d"))[0][-1]
TypeError: '>=' not supported between instances of 'int' and 'datetime.datetime'

最佳答案

您正在比较错误的对象。当 numpy 将 datetime 对象转换成它自己的格式时,类似于 2018-09-25T11:48:44.959386000',了解更多信息 here .

为了使它们兼容,在比较日期之前将日期转换为 numpy.datetime64 格式,然后进行比较。这应该可以解决问题。

因此,将您的 start_idx 行更改为此,即第 15 行start_idx = np.where(dates>=np.datetime64(datetime.strptime('2018-01-01', "%Y-%m-%d")))[0][-1]

或者你可以像这样直接转换日期np.datetime64('2018-01-01')

关于python - numpy:比较两个日期值返回 TypeError: '>=' 和 'int' 实例之间不支持 'datetime.datetime',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52491501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com