0
要構建一個算法,我想讓python腳本以這樣一種方式工作,即它不需要一次又一次地使用Panda的read_csv函數。製作DataFrame的子集
以下是我正在使用的代碼。第一
start_date = '2016-06-01'
end_date = '2017-09-22'
#Pool of symbols that I want to use
usesymbols = ['GLAXO', 'AVN']
#Function to build a dataframe
def data(symbols):
dates=pd.date_range(start_date,end_date)
df=pd.DataFrame(index=dates)
for symbol in symbols:
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
#Function to build powerset from list of "usesymbols"
def powerset(iterable):
s = list(iterable)
return chain.from_iterable(combinations(s, r) for r in range(1, len(s)+1))
power_set = list(powerset(usesymbols))
dataframe = data(usesymbols)
print(dataframe)
for j in range(0, len(power_set)):
使用usesymbols我gernerated功率設定,它看起來像如下:
[('GLAXO',), ('AVN',), ('GLAXO', 'AVN')]
然後我創建了一個數據幀,它看起來像如下:
GLAXO AVN
2016-06-01 205.93 31.42
2016-06-02 206.22 32.62
2016-06-03 207.86 31.65
2016-06-04 207.86 31.65
2016-06-05 207.86 31.65
之後,我加入一個循環,我想創建一個臨時數據框,如果j = 0,臨時數據框應該由1列即GLAXO組成,那麼當j = 1時,它應該包含一列' AVN',最後當j = 3時,它應該包含'AVN'和'GLAXO'兩列。
我在製作臨時數據框時遇到困難。第二種選擇是利用數據函數,但最終每次都會使用pandas read_csv函數。
完美的解決方案。 –