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])
参考资料如下。下面的第一个参考资料对您的案例非常有用


我们是来帮助您的,Feyi:),但您需要把问题说清楚,这样我们才能阅读和理解。请添加您尝试过的代码,作为代码块(选择代码并按住CTRL+K键)尝试在导出到excel时指定列:df.to_excel(“Allstockdata.xlsx,columns=['col 1','col 2']),感谢您的快速回复,并对错误的描述表示抱歉。我尝试了您的方法,但收到了以下错误:KeyError:“passs columns not ALL present dataframe”您是否用已有的列替换了col1、col2?请查看下面的示例。