Accessing columns, operations between columns

import pandas as pd
df = pd.read_csv('rates.csv', parse_dates=['Time'])
df.head()
Time USD JPY BGN CZK DKK GBP CHF
0 2024-01-17 1.0877 160.65 1.9558 24.755 7.4586 0.85818 0.9406
1 2024-01-16 1.0882 159.64 1.9558 24.710 7.4582 0.86078 0.9361
2 2024-01-15 1.0945 159.67 1.9558 24.714 7.4590 0.86075 0.9351
3 2024-01-12 1.0942 159.17 1.9558 24.689 7.4565 0.85950 0.9350
4 2024-01-11 1.0987 159.71 1.9558 24.659 7.4568 0.86145 0.9338
(2 * df).head()
TypeError: cannot perform __rmul__ with this index type: DatetimeArray
2 * df[['USD', 'GBP', 'JPY']] 
USD GBP JPY
0 2.1754 1.71636 321.30
1 2.1764 1.72156 319.28
2 2.1890 1.72150 319.34
3 2.1884 1.71900 318.34
4 2.1974 1.72290 319.42
... ... ... ...
56 2.1080 1.74340 316.96
57 2.1152 1.74480 317.10
58 2.1264 1.74050 318.52
59 2.1194 1.74306 317.82
60 2.1182 1.74426 317.60

61 rows × 3 columns

2 * df[['USD', 'GBP', 'JPY']]  - df[['USD', 'GBP', 'JPY']]
# all works provided they have same columns
USD GBP JPY
0 1.0877 0.85818 160.65
1 1.0882 0.86078 159.64
2 1.0945 0.86075 159.67
3 1.0942 0.85950 159.17
4 1.0987 0.86145 159.71
... ... ... ...
56 1.0540 0.87170 158.48
57 1.0576 0.87240 158.55
58 1.0632 0.87025 159.26
59 1.0597 0.87153 158.91
60 1.0591 0.87213 158.80

61 rows × 3 columns

2 * df[['USD', 'GBP', 'JPY']]  - df[['USD', 'GBP']]
GBP JPY USD
0 0.85818 NaN 1.0877
1 0.86078 NaN 1.0882
2 0.86075 NaN 1.0945
3 0.85950 NaN 1.0942
4 0.86145 NaN 1.0987
... ... ... ...
56 0.87170 NaN 1.0540
57 0.87240 NaN 1.0576
58 0.87025 NaN 1.0632
59 0.87153 NaN 1.0597
60 0.87213 NaN 1.0591

61 rows × 3 columns

dfA = 2 * df[['USD', 'GBP', 'JPY']]
dfA.sub(df[['USD', 'GBP']])
GBP JPY USD
0 0.85818 NaN 1.0877
1 0.86078 NaN 1.0882
2 0.86075 NaN 1.0945
3 0.85950 NaN 1.0942
4 0.86145 NaN 1.0987
... ... ... ...
56 0.87170 NaN 1.0540
57 0.87240 NaN 1.0576
58 0.87025 NaN 1.0632
59 0.87153 NaN 1.0597
60 0.87213 NaN 1.0591

61 rows × 3 columns

dfA.mul(df[['USD', 'GBP']])
GBP JPY USD
0 1.472946 NaN 2.366183
1 1.481884 NaN 2.368358
2 1.481781 NaN 2.395860
3 1.477481 NaN 2.394547
4 1.484192 NaN 2.414283
... ... ... ...
56 1.519722 NaN 2.221832
57 1.522164 NaN 2.237036
58 1.514670 NaN 2.260788
59 1.519129 NaN 2.245928
60 1.521221 NaN 2.243386

61 rows × 3 columns