In [1]:
import pandas as pd


cols = ('Notional', 'Tenor', 'Ccy', 'Cpty')

data = [[  1e7, 6, 'USD', 'JPM'],
        [ 20e6, 3, 'GBP', 'GS'],
        [1.2e6, 1, 'USD', 'JPM'],
        [2.5e9, 1, 'JPY', 'BA'],
        [1.2e7, 1, 'GBP', 'GS']]

df = pd.DataFrame(data, columns=cols)

df


Out[1]:
Notional Tenor Ccy Cpty
0 10000000 6 USD JPM
1 20000000 3 GBP GS
2 1200000 1 USD JPM
3 2500000000 1 JPY BA
4 12000000 1 GBP GS

In [2]:
# Slicing in different directions

df.loc[:, 'Tenor':'Ccy']


Out[2]:
Tenor Ccy
0 6 USD
1 3 GBP
2 1 USD
3 1 JPY
4 1 GBP

In [3]:
df.loc[:, ['Tenor','Ccy']]


Out[3]:
Tenor Ccy
0 6 USD
1 3 GBP
2 1 USD
3 1 JPY
4 1 GBP

In [4]:
df.loc[1:3, :]


Out[4]:
Notional Tenor Ccy Cpty
1 20000000 3 GBP GS
2 1200000 1 USD JPM
3 2500000000 1 JPY BA

In [5]:
df.iloc[3]


Out[5]:
Notional    2.5e+09
Tenor             1
Ccy             JPY
Cpty             BA
Name: 3, dtype: object

In [6]:
# Mutable setting. Note it is column, row, value (rather than row, column)

df.set_value(4, 'Tenor', 2)


Out[6]:
Notional Tenor Ccy Cpty
0 10000000 6 USD JPM
1 20000000 3 GBP GS
2 1200000 1 USD JPM
3 2500000000 1 JPY BA
4 12000000 2 GBP GS

In [7]:
# merge is the function to join tables

rates = pd.DataFrame({'Ccy': ['USD', 'GBP', 'JPY'], 'Rate': [1, 0.64, 124.89]})

usd_all = pd.merge(df, rates, on='Ccy')
usd_all['USD_Notional'] = usd_all.Notional / usd_all.Rate

usd_all


Out[7]:
Notional Tenor Ccy Cpty Rate USD_Notional
0 10000000 6 USD JPM 1.00 10000000.000000
1 1200000 1 USD JPM 1.00 1200000.000000
2 20000000 3 GBP GS 0.64 31250000.000000
3 12000000 2 GBP GS 0.64 18750000.000000
4 2500000000 1 JPY BA 124.89 20017615.501641

In [ ]: