def merge_csv(data_dir, out_dir, plot=False, ver=False):
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)
    os.chdir(out_dir)

    files = sorted(os.listdir(data_dir))
    syear,eyear = int(files[0].split('_')[3]), int(files[-1].split('_')[3])
    smonth,emonth = int(files[0].split('_')[4][0:-4]), int(files[-1].split('_')[4][0:-4])
    name = files[0].split('_')[0:3]

    if os.path.exists(out_dir+'/'+name[0]+'_'+name[1]+'_'+name[2]+'_merged.csv'):
        return name,'no errors'

    # Merge csv files into one pandas dataframe
    def read_append(data_dir,names,name,year,month,ver=False):
        path =data_dir+'/'+name[0]+'_'+name[1]+'_'+name[2]+'_%s_%s.csv' % (year,month)
        frame = pd.read_csv(path, header=14, parse_dates=['Date/Time'], index_col=['Date/Time'])
        names = names.append(frame)
        if ver==True: print path
        return names

    years = range(syear, eyear+1)
    months,smonths,emonths = range(1,12+1), range(smonth,12+1), range(1,emonth+1)
    names = pd.DataFrame()
    for year in years:
        if year==eyear:
            for month in emonths:
                try:
                    names = read_append(data_dir,names,name,year,month)
                except ValueError, e:
                    print e
                    return name,e
                except IOError, e:
                    print e
                    dd.downloader(data_dir,name[0],name[1],name[2],1,month,year,verbose='on')
                    names = read_append(data_dir,names,name,year,month)
                    return name, e
                 return name,e
             except IOError, e:
                 print e
                 dd.downloader(data_dir,name[0],name[1],name[2],1,month,year,verbose='on')
                 names = read_append(data_dir,names,name,year,month)
                 return name, e
     elif year==syear:
         for month in smonths:
             try:
                 names = read_append(data_dir,names,name,year,month)
             except ValueError, e:
                 print e
                 return name,e
             except IOError, e:
                 print e
                 dd.downloader(data_dir,name[0],name[1],name[2],1,month,year,verbose='on')
                 names = read_append(data_dir,names,name,year,month)
                 return name, e
     else:
         for month in months:
             try:
                 names = read_append(data_dir,names,name,year,month)
             except ValueError, e:
                 print e
                 return name,e
             except IOError, e:
                 print e
                 dd.downloader(data_dir,name[0],name[1],name[2],1,month,year,verbose='on')
                 names = read_append(data_dir,names,name,year,month)
                 return name, e
 names.to_csv(out_dir+'/'+name[0]+'_'+name[1]+'_'+name[2]+'_merged.csv')