簡體   English   中英

我可以從 yahoo Finance 加載多個股票代碼,但在將新列保存到 csv 之前添加新列時遇到問題

[英]I can load multiple stock tickers from yahoo finance, but I am having trouble adding new columns before it is saved to a csv

下面的代碼首先在 pnls 中上傳來自雅虎財經的數據。 它成功地做到了這一點。 然后我有代碼,我想在 pnls 中向加載的數據添加列。 這部分不成功。 最后,我想將 pnls 保存到一個 csv 文件,如果列更改不在代碼中,它會成功執行。

我需要回答的問題是如何在將 pnls 保存到 csv 之前成功進行多列更改?

from pandas_datareader import data as dreader
import pandas as pd
from datetime import datetime
import numpy as np

# Symbols is a list of all the ticker symbols that I am downloading from yahoo finance
symbols = ['tvix','pall','pplt','sivr','jju','nib','jo','jjc','bal','jjg','ld','cdw','gaz','jjn','pgm',
           'sgg','jjt','grn','oil','gld','corn','soyb','weat','uhn','uga','bunl','jgbl','bndx','aunz',
           'cemb','emhy','vwob','ald','udn','fxa','fxb'] 

#This gets the data from yahoo finance 
pnls = {i:dreader.DataReader(i,'yahoo','1985-01-01',datetime.today()) for i in symbols}

 # These are the new columns that I want to add
pnls['PofChg'] = ((pnls.Close - pnls.Open) / (pnls.Open)) * 100 
pnls['U_D_F']  = np.where(pnls.PofChg > 0 , 'Up', np.where(pnls.PofChg == 0, 'Flat', 'Down'));pnls
pnls['Up_Down']   = pnls.Close.diff()
pnls['Close%pd']  = pnls.Close.pct_change()*100


# This saves the current ticker to a csv file
for df_name in pnls:
    pnls.get(df_name).to_csv("{}_data.csv".format(df_name), index=True, header=True)

這是我運行代碼時得到的錯誤

Traceback (most recent call last):
  File "YahooFinanceDataGetter.py", line 14, in <module>
    pnls['PofChg'] = ((pnls.Close - pnls.Open) / (pnls.Open)) * 100
AttributeError: 'dict' object has no attribute 'Close'
Press any key to continue . . .

pnls = {i:dreader.DataReader(i,'yahoo','1985-01-01',datetime.today()) for i in symbols}

構建一個python dict (使用字典理解)。 要檢查這一點,您可以運行以下命令:

assert type(pnls) == dict

這是錯誤消息告訴您的內容: AttributeError: 'dict' object has no attribute 'Close'

DataFrames 實際上是字典的值。 要將轉換應用於它們,您可以迭代字典的values()

for df in pnls.values():
    df = ((df.Close - df.Open) / (df.Open)) * 100 
    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM