如何:Python Pandas获得当前库存d

2024-10-01 04:53:58 发布

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

我用过:

data = DataReader("yhoo", "yahoo", datetime.datetime(2000, 1, 1),
                  datetime.datetime.today())

在pandas(python)上获取雅虎的历史数据,但它无法显示今天的价格(市场尚未关闭)我如何才能解决这样的问题,谢谢提前。


Tags: pandasdatatodaydatetime市场价格yahoo历史数据
3条回答

因此,通过尝试和查看数据帧,这看起来不太可能。你告诉它从一个特定的日子到今天,但是数据帧在2013年5月31日停止。这告诉我,雅虎可能在过去几天里没有提供给你使用,或者熊猫只是没有把它捡起来。不只是缺了1天,还缺了3天。

如果我这样做:

>>> df = DataReader("yhoo", "yahoo", datetime.datetime(2013, 6, 1),datetime.datetime.today())
>>> len(df)
0

它告诉我,到目前为止,在那些日子里根本没有数据可供收集。如果有办法的话,我想不出来,但似乎你还没有数据,这很难相信。

import pandas
import pandas.io.data
import datetime
import urllib2
import csv

YAHOO_TODAY="http://download.finance.yahoo.com/d/quotes.csv?s=%s&f=sd1ohgl1vl1"

def get_quote_today(symbol):
    response = urllib2.urlopen(YAHOO_TODAY % symbol)
    reader = csv.reader(response, delimiter=",", quotechar='"')
    for row in reader:
        if row[0] == symbol:
            return row

## main ##
symbol = "TSLA"

history = pandas.io.data.DataReader(symbol, "yahoo", start="2014/1/1")
print history.tail(2)

today = datetime.date.today()
df = pandas.DataFrame(index=pandas.DatetimeIndex(start=today, end=today, freq="D"),
                      columns=["Open", "High", "Low", "Close", "Volume", "Adj Close"],
                      dtype=float)

row = get_quote_today(symbol)
df.ix[0] = map(float, row[2:])

history = history.append(df)

print "today is %s" % today
print history.tail(2)

为了完成近地点的回答,我花了相当长的时间才找到附加数据的方法。

             Open    High     Low   Close   Volume  Adj Close
Date
2014-02-04  180.7  181.60  176.20  178.73  4686300     178.73
2014-02-05  178.3  180.59  169.36  174.42  7268000     174.42

today is 2014-02-06

              Open    High     Low    Close   Volume  Adj Close
2014-02-05  178.30  180.59  169.36  174.420  7268000    174.420
2014-02-06  176.36  180.11  176.00  178.793  5199297    178.793

找到解决方法,只需使用urllib获取数据:

    http://download.finance.yahoo.com/d/quotes.csv?s=yhoo&f=sd1ohgl1l1v

然后将其添加到数据帧

相关问题 更多 >