本周开始使用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。如果有一个已经完成此操作并且我可以学习的片段,请告诉我。
谢谢大家。
答案 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')