Mainly for my reference

Loop through URBS results

nparr = np.zeros((15,2))

for i, l in enumerate(lst):    
    print i
    c = 0
    fold = os.path.join(inpath,l)
    files = os.listdir(fold)
    for f in files:        
        if f.endswith('i.csv'):            
            fin = os.path.join(fold,f)
            df = pd.read_csv(fin,i
            d1 = df.sum(axis=1)
            mx = d1.max(axis=0)
            nparr[c,i] = mx
            arr.append(m1)

Go grab the flows from Tuflow results and build a multi-index header

dfQ = pd.read_table(Q, skipfooter=2, skipinitialspace=True, delimiter=',', index_col=None, skiprows=(0,3,4,5,6), header=[0,1])
m = []
ls = dfQ.columns.get_level_values(0).tolist()
for i, item in enumerate(ls):
    if len(item[1])<2:
        #print i, item[1]
        m.append(i)
    elif len(item[1])>15:
        #print i, item[1]
        m.append(i)
dfQ.drop(dfQ.columns[m],axis=1,inplace=True)
dfQ.ix[:,~dfQ.columns.duplicated()]
dfQ.columns = pd.MultiIndex.from_tuples(dfQ.columns.tolist())

Find the location of results in URBS CSV result files to

for n, line in enumerate(p):      
    if "River Levels" in line:
        WL_start = int(n)
    if "Flow Rates  " in line:
        Q_start = int(n)
    if "PARAMETER data" in line:
        param_start = int(n)
count = 0

Calculation of Standard Normal Deviate from AEP Tony Summarises this as an R blog

## - Standard Normal Deviate 
dfRES_24mrg['Z'] = -1*scipy.stats.norm.ppf(dfRES_24mrg['aep%'])

List Comprehension

flist = [f for f in os.listdir(inpath) if f.endswith('.csv') and f.startswith(evt)]