数据读取器时间限制

2024-05-21 05:52:18 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以通过pandas datareader提取一个特定日期的数据?你知道吗

假设我只想提取今天的一些信息:

import pandas_datareader.data as web
now = dt.datetime.now()
start = now.year, now.month, now.day
q = web.DataReader(source, 'googl', start, start)

然而,当我运行这个程序时,我得到了从最早可能的时间到现在的所有数据。你知道吗

有办法吗?你知道吗

编辑: 在实现注释者建议的代码时,我仍然从源代码中获得所有可能的日期。我的代码如下:

import pandas_datareader.data as web
import pandas as pd
import datetime as dt
from datetime import datetime
import numpy as np
import matplotlib.pyplot as plt
from io import StringIO
import time    
def updatestock(stock):
        #now = dt.datetime.now()
        #start = now.year, now.month, now.day
        start_date = date = dt.datetime.now().date()
        q = web.DataReader(list_of_tickers, 'stooq', start = start_date, end = 
        start_date)
        resq = q.stack().reset_index()
        resq.columns.names = [None]
        resq.index.names = ['ID']
        stockdata = resq.groupby('Symbols')
        return stockdata

    list_of_tickers = ['DELL', 'GRPN', 'EBS']
    data = updatestock(list_of_tickers)

    stock1 = data.get_group('GRPN')

Tags: ofimportwebpandasdatadatetimedateas
2条回答

你可以试试这个。你知道吗

import datetime start_date = date = datetime.datetime.now().date() q = web.DataReader(source, 'googl', start=start_date, end=start_end)

我成功地测试了“start”和“end”参数的类型日期时间。日期时间或者datetime.date日期. 你知道吗

“Stooq”的数据读取器没有实现日期过滤器。这就是为什么建议的代码不适合你。因此,您需要添加额外的代码来过滤返回数据帧中的记录。您可以尝试以下操作:

# Filter the Stooq Results by a Specific Date
stock_filter_mask = stock1["Date"] == start_date # Where "Date" is the column which contains date in returned DF.
stock_output = stock1[stock_filter_mask]
print("output = ", stock_output)

编辑:我找到了解决办法。“stooq”api无法使用开始和结束日期。使用“yahoo”作为源代码修复了它

例如:

start = ('8-20-2019')
end = ('12-20-2019')

df = web.DataReader("AAPL", 'yahoo', start, end)

相关问题 更多 >