【问题标题】:Python Pandas_DataReader to create a DF for each ticker and save .to_csv with tickers namePython Pandas_DataReader 为每个代码创建一个 DF 并使用代码名称保存 .to_csv
【发布时间】: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


【解决方案1】:

IIUC:

for ticker in tickers:
    prices = wb.DataReader(ticker, start = start, end = end, data_source='yahoo')
    ticker_csv = "{}.csv".format(ticker)
    prices.to_csv(ticker_csv)

为每个股票单独的csv 文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 2019-09-16
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多