2016-07-02 76 views
2

找不到任何關於這個的東西python ... 我一直在爲一些機器學習項目研究三個不同的數據集,並且它有一項艱鉅的任務,對於不同的數據幀相同的操作以同樣的方式......它開始與此:將相同的操作應用於不同的數據框

aviva = pd.read_csv('data/LON_AV_.csv', parse_dates=['Date'], index_col='Date', date_parser=dateparse) 
admiral= pd.read_csv('data/LON_ADM.csv', parse_dates=['Date'], index_col='Date', date_parser=dateparse) 
three = pd.read_csv('data/LON_III.csv', parse_dates=['Date'], index_col='Date', date_parser=dateparse) 

中間還有在應用到了同一

,並結束每個數據幀是許多命令這個:

three.to_csv('three_x.csv') 
three_label.to_csv('three_y.csv') 

admiral.to_csv('admiral_x.csv') 
admiral_label.to_csv('admiral_y.csv') 

aviva.to_csv('aviva_x.csv') 
aviva_label.to_csv('aviva_y.csv') 

我對你們的問題是這樣的,有沒有什麼辦法可以加快整個過程,以便我不必一直重複這樣的代碼? 感謝你們,有一個美好的一天

回答

0

我會做這個方式:

in_csv_template = 'data/LON_{}.csv' 
out_csv_template = 'out/{}_x.csv' 
out_label_template = 'out/{}_y.csv' 

cfg = { 
    'aviva': 'AV_', 
    'admiral': 'ADM', 
    'three': 'III', 
} 

def process(fi_csv, fo_csv, fo_label, **kwargs): 
    df = pd.read_csv(fi_csv, **kwargs) 

    ... 

    df.to_csv(fo_csv) 
    df_label.to_csv(fo_label) 


for k,v in cfg.items(): 
    process(in_csv_template.format(v), 
      out_csv_template.format(k), 
      out_label_template.format(k), 
      parse_dates=['Date'], 
      index_col='Date', 
      date_parser=dateparse) 
+0

好的工作的人謝謝你多數民衆贊成在相當甜蜜,關於自動遠至我cwoudl能夠使它,好一個克 – entercaspa

1

代替三個DataFrames,avivaadmiralthree,使用一個dict具有相同名稱的按鍵,地圖DataFrames:

dfs = dict() 
for filename, name in [('LON_AV_.csv', 'aviva'), 
         ('LON_ADM.csv', 'admiral'), 
         ('LON_III.csv', 'three')]: 
    dfs[name] = pd.read_csv('data/{}'.format(filename), parse_dates=['Date'], 
          index_col='Date', date_parser=dateparse) 

    ... 

    dfs[name].to_csv('{}_x.csv'.format(name)) 
    label[name].to_csv('{}_y.csv'.format(name)) 
相關問題