【问题标题】:Rearranging Index, Rows and Columns from Pandas-DataReader从 Pandas-DataReader 重新排列索引、行和列
【发布时间】: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 替换为您已有的现有列?
  • 查看下面的示例。

标签: python pandas


【解决方案1】:

导出到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'] ) 

在您的情况下,更新代码后,您应该使用正确的数据框:

从网上获取 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])

参考如下。下面的第一个参考对您的情况非常有用。

【讨论】:

    猜你喜欢
    • 2018-10-28
    • 2021-06-09
    • 2019-03-26
    • 2019-02-02
    • 1970-01-01
    • 2021-12-23
    • 2021-12-09
    • 2017-12-14
    • 2012-10-09
    相关资源
    最近更新 更多