2017-11-13 2 views
0

複数の場所に一連のCSVファイルがありますが、フォルダ名の唯一の違いは資産/中古。だから、各フォルダ()とそのフォルダ内の最新のファイルを検索するのにワイルドカード(%資産)を使用しようとしています。次に、個別のDataFrame内の各アセットの「閉じる」列のパーセント変更を期間ごとに計算したいとします。パンダは複数のCSVファイルを読み込み、各ファイルの列の変化率を計算します

各ファイルには、次のようになります。私のコードは、以下にしようとしている

Ticker Date/Time Close 
ES U7 3/14/2017 4:44 2365.5 
ES U7 3/14/2017 6:14 2360 
ES U7 3/14/2017 6:29 2362.25 
ES U7 3/14/2017 7:44 2361.25 
ES U7 3/14/2017 7:59 2359.25 
ES U7 3/14/2017 8:14 2357.25 
ES U7 3/14/2017 8:29 2355 
ES U7 3/14/2017 8:44 2353.75 
ES U7 3/14/2017 8:59 2354.75 
ES U7 3/14/2017 9:14 2354.5 
ES U7 3/14/2017 9:29 2359.25 
ES U7 3/14/2017 9:44 2358.5 
ES U7 3/14/2017 9:59 2359 
ES U7 3/14/2017 10:14 2355.5 

。各csvファイルを読み込み(データフレームに変換)、b。 'Close'列の変化率を計算します。

ValueError: max() arg is an empty sequence 

することができます:私は「ALLFILES」の定義でエラーが発生します

def read_files(): 

    Assets = ['ZN','VX','ES'] 

    path = r"C:\Users\cost9\OneDrive\Documents\PYTHON\Exported_Data\%s\*.csv" % Assets 
    allfiles = (max(glob.iglob(path), key=os.path.getctime)) 

    list_ = [] 

    for file_ in allFiles: 
     df1 = pd.read_csv(file_,index_col=None) 
     list_.append(df)  

    for asset in assets: 
     df1['Returns'] = Asset['Close'].pct_change() 

:だから私は、「ES」と「ZN」シンボル「VX」の各ファイルを拾うために、このコードをしたいです誰かがforループ/関数を複数のシンボルに適用するのを助けてくれますか?

+0

注 'rをその "C:\ Users \ユーザーcost9 \ OneDrive \ドキュメント\ PYTHON \ Exported_Data \%sの\ * csvファイル" %Assets'は、あなたはそれがないと思う何をしていません。 –

答えて

1

ここでの主な問題は、ファイルの読み方です。すべての単一のファイルをロードする場合は、おそらくmaxのようなものを使用したくないでしょう。さらに、string % Assetsは、リストの文字列化されたバージョンをそのまま挿入しようとしています。


assets = ['ZN','VX','ES'] 
path = r"C:\Users\cost9\OneDrive\Documents\PYTHON\Exported_Data\%s\*.csv" 

files = [] 
for a in assets: 
    files.extend(glob.iglob(path % a)) 

df_list = [pd.read_csv(f) for f in files] 
df = pd.concat(df_list) 
関連する問題