有没有一种方法可以通过熊猫数据读取器仅提取1个特定日期的数据?
让我们说我想只在今天提取一些信息:
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')
答案 0 :(得分:0)
您可以尝试一下。
import datetime
start_date = date = datetime.datetime.now().date()
q = web.DataReader(source, 'googl', start=start_date, end=start_end)
我成功地通过将“开始”和“结束”参数的类型为datetime.datetime或datetime.date进行了测试。
“ Stooq”的熊猫数据阅读器未实现日期过滤器。这就是为什么建议的代码对您不起作用的原因。因此,您需要添加额外的代码来过滤返回的DataFrame中的记录。您可以尝试以下操作:
# 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)
答案 1 :(得分:0)
编辑:我找到了解决方案。 'stooq'API不适用于开始日期和结束日期。使用“ yahoo”作为源进行修复
例如:
start = ('8-20-2019')
end = ('12-20-2019')
df = web.DataReader("AAPL", 'yahoo', start, end)