我正在使用以下代碼來創建一個DataFrame,其中包含兩個符號的結尾價格,分別以列標題作爲它們的符號名稱。使用for循環來構建DataFrame
symbols=['KEL','PAEL']
start_date = '2016-05-01'
end_date = '2017-03-02'
allocation = 50000
def data(symbol):
dates=pd.date_range(start_date,end_date)
df=pd.DataFrame(index=dates)
df_temp=pd.read_csv('/home/furqan/Desktop/python_data/{}.csv'.format(str(symbol)),usecols=['Date','Close'],
parse_dates=True,index_col='Date',na_values=['nan'])
df_temp = df_temp.rename(columns={'Close': symbol})
df=df.join(df_temp)
df=df.fillna(method='ffill')
df=df.fillna(method='bfill')
return df
for symbol in symbols:
df=data(symbol)
pass
print(df)
當我運行上面的代碼時,它會用新符號覆蓋列而不是在DataFrame中創建其他列。
如果我想要它爲DataFrame中的每個新符號創建新列,那麼如何在不使用函數內的任何for循環的情況下實現該功能。
預計outoput:
KEL PAEL
2016-05-01 7.07 61.74
2016-05-02 7.07 61.74
2016-05-03 7.21 62.19
2016-05-04 7.21 62.72
2016-05-05 7.20 64.24
2016-05-06 7.17 63.88
2016-05-07 7.17 63.88
2016-05-08 7.17 63.88
2016-05-09 7.25 64.12
2016-05-10 7.28 65.59
2016-05-11 7.43 65.78
輸出我:
PAEL
2016-05-01 61.74
2016-05-02 61.74
2016-05-03 62.19
2016-05-04 62.72
2016-05-05 64.24
2016-05-06 63.88
2016-05-07 63.88
2016-05-08 63.88
2016-05-09 64.12
2016-05-10 65.59
2016-05-11 65.78
在你的循環,你正在做DF =數據(符號)覆蓋你DF。你應該嘗試像df [symbol] = data(symbol)那樣添加一個新列 – Vaishali
@A-Za-z它會導致一個錯誤:NameError:name'df'沒有被定義 –
@FurqanHashim,但是你仍然需要創建dataframe對象在使用之前,這就是python錯誤告訴你的。 – Boud