Python 从DataReader重新排列索引、行和列
我对这个很陌生, 我期待得到多个股票的数据,并得到他们的符号和名称(股票代码)排序。当我运行我的代码时,我得到了我想要的所有数据,但它以各种方式排序,但不是我想要的方式 我试图重命名列和索引,但总是出现多索引错误Python 从DataReader重新排列索引、行和列,python,pandas,Python,Pandas,我对这个很陌生, 我期待得到多个股票的数据,并得到他们的符号和名称(股票代码)排序。当我运行我的代码时,我得到了我想要的所有数据,但它以各种方式排序,但不是我想要的方式 我试图重命名列和索引,但总是出现多索引错误 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
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
更新:
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
更新我作为列获得的内容:
多重索引([(‘日期’,“”),
(“高”、“AKTX”),
(“高”、“ARCI”),
(“高”、“CETX”),
(“低”、“AKTX”),
(“低”、“ARCI”),
(“低”、“CETX”),
(“打开”、“AKTX”),
(‘打开’、‘ARCI’),
(“开放”、“CETX”),
(“关闭”、“AKTX”),
(“关闭”、“ARCI”),
(“关闭”、“CETX”),
(“卷”、“AKTX”),
(“卷”、“ARCI”),
(“卷”、“CETX”),
('Adj Close','AKTX'),
('Adj Close','ARCI'),
('Adj Close','CETX'),
名称=[“属性”,“符号])导出到excel时指定列名称:
import pandas as pd
d = {'col1':[1, 2, 3, 4], 'col2':[1, 4, 9, 16]}
df1 = pd.DataFrame(data=d)
df1
df1.to_excel("test.xlsx",columns=['col2', 'col1'] )
在您的情况下,更新代码后,应使用正确的数据框:
从web获取df后:
df = web.DataReader(tickers, "yahoo", start)
尝试将每个列传递给新的df:
d = {"Date":df['Date'], "Ticker":df['Ticker'],...
df1 = pd.DataFrame(data=d)
或直接:
df.to_excel("Allstockdata.xlsx",columns=["Date"])
首先尝试一列“日期”列,如果行得通,再添加更多。小心,如果df不包含确切的列名,它将返回一个错误
多索引数据:
df.to_excel("Allstockdata.xlsx",index_col=[0,1])
参考资料如下。下面的第一个参考资料对您的案例非常有用