无法替换数据框值

时间:2020-05-01 10:02:29

标签: dataframe

我正在尝试使用datareader创建一个股价表。问题在于,用于绘制数据的股票代码不是很直观地识别出来的。因此,我打算(1)使用datareader提取数据,并(2)用更熟悉的缩写形式替换代码名称(我将其设置在单独的CSV中; col A =代码,col B =可识别的缩写) )。但是,下面的代码似乎不起作用-特别是从第32行开始。 (#从CSV提取并创建字典,将其用于将股票代号替换为可识别的名称)

有人可以帮我找出问题所在吗?

import pandas_datareader.data as web
import pandas as pd
import datetime as dt
import csv
import matplotlib.pyplot as plt
from matplotlib import style
import numpy as np

style.use('ggplot')

# Extract closing prices from list of tickers from a txt file
end = dt.datetime.today()
start = dt.date(end.year - 10, 1, 1)

tickerCsv = open('STI constituents.txt', 'r')
reader = csv.reader(tickerCsv)
tickers = {rows[0] for rows in reader}

main_df = pd.DataFrame()

for ticker in tickers:
    df = web.DataReader(ticker, 'yahoo', start, end)
    df.rename(columns={'Adj Close': ticker}, inplace=True)
    df.drop(['Open', 'High', 'Low', 'Close', 'Volume'], 1, inplace=True)

    if main_df.empty:
        main_df = df
    else:
        main_df = main_df.join(df, how='outer')
    print(main_df)

# Extract and create dictionary from CSV, that will be used to replace tickers into recognisable names
ticker_frame = csv.DictReader(open('Tickers.csv'))

ticker_dict = {}
for row in ticker_frame:
    for column, value in row.items():
        ticker_dict.setdefault(column, []).append(value)

lookup = pd.DataFrame(ticker_dict)

# Make the replacement to main_df
main_df.replace(dict(zip(lookup.Symbol, lookup.Name)))

# Save the transformed dataframe into CSV
main_df.to_csv('sti_joined.csv')

0 个答案:

没有答案