gpt4 book ai didi

pandas - '<' not supported between instances of ' 日期时间.日期' 和 'str'

转载 作者:行者123 更新时间:2023-12-02 01:05:05 24 4
gpt4 key购买 nike

我收到一个类型错误:

TypeError: '<' not supported between instances of 'datetime.date' and 'str'`

运行以下代码时:

import requests
import re
import json
import pandas as pd

def retrieve_quotes_historical(stock_code):
quotes = []
url = 'https://finance.yahoo.com/quote/%s/history?p=%s' % (stock_code, stock_code)
r = requests.get(url)
m = re.findall('"HistoricalPriceStore":{"prices":(.*?), "isPending"', r.text)
if m:
quotes = json.loads(m[0])
quotes = quotes[::-1]
return [item for item in quotes if not 'type' in item]

quotes = retrieve_quotes_historical('INTC')
df = pd.DataFrame(quotes)

s = pd.Series(pd.to_datetime(df.date, unit='s'))
df.date = s.dt.date
df = df.set_index('date')

这段代码运行得很顺利,但是当我尝试运行这段代码时:

df['2017-07-07':'2017-07-10']

我收到类型错误。

我该如何解决这个问题?

最佳答案

问题是,当索引的类型为 datetime.date 时,您想使用字符串 '2017-07-07' 进行切片。您的切片也应该是这种类型。

您可以通过定义开始日期和结束日期来实现此目的,如下所示:

import pandas as pd

startdate = pd.to_datetime("2017-7-7").date()
enddate = pd.to_datetime("2017-7-10").date()
df.loc[startdate:enddate]

startdate 和 enddate 现在的类型为 datetime.date 并且您的切片将起作用:

            adjclose    close        high        low            open        volume
date
2017-07-07 33.205006 33.880001 34.119999 33.700001 33.700001 18304500
2017-07-10 32.979588 33.650002 33.740002 33.230000 33.250000 29918400

也可以在没有 pandas 的情况下创建 datetime.date 类型:

import datetime

startdate = datetime.datetime.strptime('2017-07-07', "%Y-%m-%d").date()
enddate = datetime.datetime.strptime('2017-07-10', "%Y-%m-%d").date()

关于pandas - '<' not supported between instances of ' 日期时间.日期' 和 'str',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49554491/

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