【发布时间】:2020-02-14 03:23:54
【问题描述】:
关于我在 StackOverflow 的上一个问题,一个名叫 Ash 的人给了我一个代码,我根据自己的需要进行了编辑,但是,我很难弄清楚如何获得“开放”、“高”,每个 Ticker 的 'low','close','volume',并将它们中的每一个保存为 CSV。
下面的代码给我带来了我不需要的“Adj Close”。我想为每个股票代码获取一个 DF,其中包含开盘价、最高价、最低价、收盘价、成交量作为列,然后将每个 DF 保存为 .to_csv 并使用股票代码名称。
是否可以这样做,而不破坏“代码”列表的一部分?
from datetime import date
import pandas as pd
import datetime
from pandas_datareader import data as wb
start = date.today()-datetime.timedelta(days=2*365)
end = date.today()
tickers = ['MGFF11.SA',
'XPML11.SA',
'VISC11.SA',
'HGCR11.SA',
'XPLG11.SA',]
price_data = []
for ticker in tickers:
prices = wb.DataReader(ticker, start = start, end = end, data_source='yahoo')
price_data.append(prices.assign(ticker=ticker)[['ticker', 'Adj Close']])
df = pd.concat(price_data)
pd.set_option('display.max_columns', 500)
df = df.reset_index()
df = df.set_index('Date')
table = df.pivot(columns='ticker')
table.columns = [col[1] for col in table.columns]
print(table)
【问题讨论】:
-
将您需要的所有字段添加到
price_data.append(prices.assign(ticker=ticker)[['ticker', 'Adj Close']]) -
我收到
KeyError: "['close', 'open', 'low', 'high', 'volume'] not in index" -
你不觉得是
"Close", "Open", "Low", "High, "Volume"吗? -
现在它打印了数据!谢谢!虽然它仍然是及时的,但您如何建议我为每个代码保存一个 csv,而不为每个代码重复代码?
标签: python python-3.x pandas pandas-datareader