Pandas 数据读取器时间限制
Pandas datareader time constraints
有没有办法通过 pandas datareader 仅提取 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')
你可以试试这个。
import datetime
start_date = date = datetime.datetime.now().date()
q = web.DataReader(source, 'googl', start=start_date, end=start_end)
我通过 "start" 和 "end" 参数的类型 datetime.datetime 或 datetime.date.
成功测试了它
Pandas data reader for "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)
编辑:我找到了解决方案。 'stooq' api 无法使用开始日期和结束日期。使用 'yahoo' 作为来源修复了它
例如:
start = ('8-20-2019')
end = ('12-20-2019')
df = web.DataReader("AAPL", 'yahoo', start, end)
有没有办法通过 pandas datareader 仅提取 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')
你可以试试这个。
import datetime
start_date = date = datetime.datetime.now().date()
q = web.DataReader(source, 'googl', start=start_date, end=start_end)
我通过 "start" 和 "end" 参数的类型 datetime.datetime 或 datetime.date.
成功测试了它Pandas data reader for "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)
编辑:我找到了解决方案。 'stooq' api 无法使用开始日期和结束日期。使用 'yahoo' 作为来源修复了它
例如:
start = ('8-20-2019')
end = ('12-20-2019')
df = web.DataReader("AAPL", 'yahoo', start, end)