因此,我正在尝试导入(O&G/能源公司)S&P500 (SPY) BP 的股票价格。我正在寻找的结果是一个包含 3 列的“表格”;1 表示日期,1 表示 SPY 的 Adj Close,1 表示 BP 的 Adj Close。但是,我的代码产生:
ValueError: columns overlap but no suffix specified: Index(['SPY'], dtype='object')
我明白这个错误告诉我什么:索引列“Adj Close”有重叠。无论库存如何,我们每次提取的列都称为“SPY”。我正在使用的 join() 方法很困惑,因为列名必须是唯一的,好吧,我就是这样解释它的......
编码:
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()
所以,这就是我得到的代码。如果有任何人可以阐明我做错了什么地球,请告诉我。
非常感谢!