Sep-04-2019, 01:56 PM
Hi all, first time poster, newish to Python.
I have a multi-index pandas dataframe (named dfForex) containing daily forex data for multiple currency pairs. The dataset looks something like this:
Now, I've worked out how to do this if I specify a ticker:
Any suggestions?
Thanks in advance.
I have a multi-index pandas dataframe (named dfForex) containing daily forex data for multiple currency pairs. The dataset looks something like this:
dfForex[['<open>', '<high>','<low>','<close>']]
<open> <high> <low> <close>
<date> <ticker>
2019-07-01 AUDEUR 0.6185 0.6189 0.6150 0.6170
AUDGBP 0.5532 0.5539 0.5503 0.5508
AUDHKD 5.4899 5.4935 5.4348 5.4413
AUDJPY 76.0240 76.2750 75.4110 75.4780
AUDUSD 0.7030 0.7034 0.6956 0.6965
2019-07-03 AUDEUR 0.6194 0.6239 0.6185 0.6229
AUDGBP 0.5552 0.5600 0.5545 0.5587
AUDHKD 5.4554 5.4944 5.4469 5.4818
AUDJPY 75.4210 75.9040 75.1260 75.7710
AUDUSD 0.6994 0.7039 0.6985 0.7031
2019-07-04 AUDEUR 0.6229 0.6240 0.6217 0.6224
AUDGBP 0.5587 0.5599 0.5575 0.5583
AUDHKD 5.4818 5.4895 5.4615 5.4687
AUDJPY 75.7660 75.9230 75.6140 75.7310
AUDUSD 0.7031 0.7048 0.7014 0.7024What I want to do is add a new column to each row that displays the previous day's close.Now, I've worked out how to do this if I specify a ticker:
dfForex.loc[(slice(None), ['AUDUSD']), 'last_close'] = dfForex.loc[(slice(None), ['AUDUSD']), :]['<close>'].shift()The above adds the last close for the AUDUSD ticker only:
dfForex[['<open>', '<high>','<low>','<close>','last_close']]
Out[12]:
<open> <high> <low> <close> last_close
<date> <ticker>
2019-07-01 AUDEUR 0.6185 0.6189 0.6150 0.6170 0.0000
AUDGBP 0.5532 0.5539 0.5503 0.5508 0.0000
AUDHKD 5.4899 5.4935 5.4348 5.4413 0.0000
AUDJPY 76.0240 76.2750 75.4110 75.4780 0.0000
AUDUSD 0.7030 0.7034 0.6956 0.6965 NaN
2019-07-03 AUDEUR 0.6194 0.6239 0.6185 0.6229 0.0000
AUDGBP 0.5552 0.5600 0.5545 0.5587 0.0000
AUDHKD 5.4554 5.4944 5.4469 5.4818 0.0000
AUDJPY 75.4210 75.9040 75.1260 75.7710 0.0000
AUDUSD 0.6994 0.7039 0.6985 0.7031 0.6965
2019-07-04 AUDEUR 0.6229 0.6240 0.6217 0.6224 0.0000
AUDGBP 0.5587 0.5599 0.5575 0.5583 0.0000
AUDHKD 5.4818 5.4895 5.4615 5.4687 0.0000
AUDJPY 75.7660 75.9230 75.6140 75.7310 0.0000
AUDUSD 0.7031 0.7048 0.7014 0.7024 0.7031Now I figure I could simply wrap the above line in a for: loop and walk through the ticker index, but I'm wondering if there is a more concise way of achieving the desired outcome.Any suggestions?
Thanks in advance.
