股票价格新手的进口问题

时间:2017-12-21 19:37:18

标签: python pandas pandas-datareader

本周开始使用python的新手。我一直在阅读Datacamp和其他一些在线资源以及Python而不用担心。

我想测试一下,看看我是否可以导入一些数据价格并从互联网上复制代码。由于错误,我无法使其工作:TypeError:字符串索引必须是第10行的整数

import pandas_datareader as pdr #needed to read data from yahoo

#df = pdr.get_data_yahoo('AAPL')
#print (df.Close)

stock =('AAPL')
start_date = '2017-01-01'
end_date = '2017-12-10'

closes = [c['Close'] for c in pdr.get_data_yahoo(stock, start_date, 
end_date)]

for c in closes:
    print (c)

线关闭= [c .......]给我一个错误。

有关如何解决此问题的任何建议?我正在开始我的旅程,并且实际上尝试导入S& P500过去一年的收盘价,然后将它们保存到Excel。如果有一个已经完成此操作并且我可以学习的片段,请告诉我。

谢谢大家。

2 个答案:

答案 0 :(得分:1)

get_data_yahoo的调用会返回单个数据帧。

df = pdr.get_data_yahoo(stock, start_date, end_date)
df.head()

                  Open        High         Low       Close   Adj Close  \
Date                                                                     
2017-01-03  115.800003  116.330002  114.760002  116.150002  114.311760   
2017-01-04  115.849998  116.510002  115.750000  116.019997  114.183815   
2017-01-05  115.919998  116.860001  115.809998  116.610001  114.764473   
2017-01-06  116.779999  118.160004  116.470001  117.910004  116.043915   
2017-01-09  117.949997  119.430000  117.940002  118.989998  117.106812   

              Volume  
Date                  
2017-01-03  28781900  
2017-01-04  21118100  
2017-01-05  22193600  
2017-01-06  31751900  
2017-01-09  33561900  

type(df)
pandas.core.frame.DataFrame

与此同时,您正在尝试迭代此返回的数据帧。默认情况下,for循环将遍历列。例如:

for c in df:
    print(c)

Open
High
Low
Close
Adj Close
Volume

当您在列表comp中复制此代码时,c依次为每个列名提供,str[str]是无效操作。

总之,只需对返回的结果执行closes = df['Closes']即可获得Closes列。

答案 1 :(得分:0)

我认为您只是想将数据框转储到Excel电子表格中。这会让你到那里。

axis=0

如果您只想要关闭列:

import pandas as pd
import pandas_datareader as pdr

df = pdr.get_data_yahoo('AAPL')
df.head(2)

Out[12]:
                 Open       High    Low      Close  Adj Close     Volume
Date
2009-12-31  30.447144  30.478571  30.08  30.104286  26.986492   88102700
2010-01-04  30.490000  30.642857  30.34  30.572857  27.406532  123432400

df.to_excel('dump_aapl.xlsx')