【发布时间】:2020-01-04 21:36:42
【问题描述】:
我对此很陌生, 我希望获取多只股票的数据并按符号和名称(股票代码)排序。当我运行我的代码时,我得到了我想要的所有数据,但它以各种方式排序,但不是我想要的方式。
我尝试重命名列和索引,但总是收到多索引错误。
import datetime as dt
import pandas as pd
import pandas_datareader.data as web
# Variables of Tickers and Start and End dates of which Data is gathered
tickers = ["MSFT", "AAPL", "TSLA"]
# Where to get data from
start = dt.datetime(2016, 1, 1)
df = web.DataReader(tickers, "yahoo", start)
#Writes Data into Excel
df.to_excel("Allstockdata.xlsx")
print(df)
我得到以下信息:
Attributes-|High----------|Low-----------|---Open----|Close|Volume|Adj Close|------------------------------
Symbol-----|MSFT|AAPL|TSLA|MSFT|AAPL|TSLA|-M-|-A-|-T-|M|A|T|M|A|T-|M|A|T|----------------------
Date-------|-----------------------------------------------------------------------------------------------------------------
2016-01-04-|-54-|-105|231-|53--|102-|219-|54|102-|230|
我希望你明白我在做什么。
我想要的看起来更像这样:
Date------------|Ticker--|Open--| High-| Low | Close | Volume | Adj Close |-------------------------------------
2016-01-04--| MFST---|---54--|54-----|53----|54-----|53778000|50--------------------------------------------
2016-01-04--| AAPL---|--102--|105---|102--|105----|67649400|98-----------------------------------------------
2016-01-04--| TSLA---|--220--|231---|219--|223----|9874225 |223--------
很抱歉用丑陋的方式来展示我遇到的问题,希望有人仍然愿意帮助新手。
谢谢
更新:
import datetime as dt
import pandas as pd
import pandas_datareader.data as web
# Variables of Tickers and Start and End dates of which Data is gathered
tickers = ["MSFT", "AAPL", "TSLA"]
# Where to get data from
start = dt.datetime(2016, 1, 1)
# d = {"Date":[1, 2, 8], "Ticker":[2, 3, 4], "Open":[5, 6, 7], "High":[8, 9, 0] }
d = {"Date":[""], "Ticker":[""], "Open":[""], "High": [""], "Low":[""], "Close":[""], "Volume":[""], "Adj Close":[""]}
df1 = pd.DataFrame(data=d)
df1
# df = web.DataReader(tickers, "yahoo", start)
df1.to_excel("Allstockdata.xlsx",columns=["Date", "Ticker", "Open", "High", "Low", "Volume", "Adj Close"]) #Writes Data into Excel
更新:
import datetime as dt
import pandas as pd
import pandas_datareader.data as web
# Variables of Tickers and Start and End dates of which Data is gathered
tickers = ["MSFT", "AAPL", "TSLA"]
# Where to get data from
start = dt.datetime(2016, 1, 1)
df = web.DataReader(tickers, "yahoo", start)
d = {"Date":[""], "Ticker":[""], "Open":[""], "High": [""], "Low":[""], "Close":[""], "Volume":[""], "Adj Close":[""]}
df1 = pd.DataFrame(data=d)
print(df.head())
# df.to_excel("Allstockdata.xlsx")
# df1.to_excel("Allstockdata.xlsx",columns=["Date", "Ticker", "Open", "High", "Low", "Volume", "Adj Close"]) #Writes Data into Excel
更新我得到的列:
MultiIndex([( '日期', ''), ('高','AKTX'), ('高','ARCI'), ('高','CETX'), ('低','AKTX'), ('低','ARCI'), ('低','CETX'), ('打开','AKTX'), ('打开','ARCI'), ('打开','CETX'), ('关闭','AKTX'), ('关闭','ARCI'), ('关闭','CETX'), (“音量”,“AKTX”), (“音量”,“ARCI”), (“音量”,“CETX”), ('调整关闭','AKTX'), ('调整关闭','ARCI'), ('调整关闭','CETX')], names=['Attributes', 'Symbols'])
【问题讨论】:
-
我们是来帮您费易的:),但是您需要把您的问题说清楚,以便我们阅读和理解。请添加您尝试过的代码,作为代码块(选择代码和 CTRL+K)
-
导出到excel时尽量指定列:df.to_excel("Allstockdata.xlsx",columns=['col 1', 'col 2'] )
-
感谢您的快速回复,并对糟糕的描述感到抱歉。我尝试了您的方法,但收到此错误: KeyError: 'passes columns are not ALL present dataframe'
-
您是否将 col1、col2 替换为您已有的现有列?
-
查看下面的示例。