したがって、私はS & P500(SPY)BPの株価(O & G /エネルギー会社)の株価をインポートしようとしています。私が探している結果は、3列の "テーブル"です。日付は1、SPYのAdj Closeは1、BPのAdj Closeは1です。しかし、私のコードでは、次のように表示されます。Pythonで2つの金融株式をインポートする
ValueError: columns overlap but no suffix specified: Index(['SPY'], dtype='object')
私はこのエラーが何を伝えているのか理解しています。インデックス列「Adj Close」に重複があります。株式に関係なく、毎回抽出している列は「SPY」と呼ばれます。
import pandas as pd
def test_run():
start_date=('2016-03-10') #start date parameter
end_date=('2017-03-10') #end date parameter
dates=pd.date_range(start_date,end_date)
df1=pd.DataFrame(index=dates) #create empty dataframe df1
dfSPY=pd.read_csv("C:\SPY.csv",index_col="Date",parse_dates=True,
usecols=['Date','Adj Close'],na_values=['nan'])
#create dataframe for SPY stock
#rename Adj Close column to SPY to prevent clash
dfSPY=dfSPY.rename(columns={'Adj Close':'SPY'})
#join the 2 dataframes using DataFrame.join(), and how='inner'
df1=df1.join(dfSPY,how='inner')
#read in more stocks; SPY & BP
symbols=['SPY','BP']
for symbol in symbols:
df_temp=pd.read_csv("C{}.csv".format(symbol),index_col='Date',parse_dates=True,
usecols=['Date','Adj Close'],na_values=['nan'])
#rename to prevent clash
df_temp=df_temp.rename(columns={'Adj Close':symbol})
df1=df1.join(df_temp) #use default how='left'
print(df1)
if __name__=="__main__":
test_run()
ので、それはです:列名は一意でなければなりませんので、私は使用していjoin()メソッドは、
コードが...、まあ、そのようなことは、私はそれを解釈してきた方法です混乱していますコードがあります。もし私が間違ったことをしたことについて何らかの光を当てることができる人がいるなら、私に知らせてください。
多くの感謝!
NB/Adj Closeは'SPY'と 'BP'というシンボルに置き換えられます – Matthew
おそらく過去にPythonで優れたものをインポートするのはなぜですか?最終的には、最終的にExcelでもチャートを提供する必要があります.VBScriptで直接作業を開始すると、後でこのような場合に2時間の労働時間を節約できます。 (それは複雑なので、pyhtonのものではないから) –
@VitaliPom Python内で優れたサポートがあります。 vbcscriptに切り替える必要はありません。 – e4c5