Filtering, querying a DataFrame

import pandas as pd
df = pd.read_csv('rates.csv', parse_dates=['Time'])
df.index = df['Time']
df
Time USD JPY BGN CZK DKK GBP CHF
Time
2024-01-17 2024-01-17 1.0877 160.65 1.9558 24.755 7.4586 0.85818 0.9406
2024-01-16 2024-01-16 1.0882 159.64 1.9558 24.710 7.4582 0.86078 0.9361
2024-01-15 2024-01-15 1.0945 159.67 1.9558 24.714 7.4590 0.86075 0.9351
2024-01-12 2024-01-12 1.0942 159.17 1.9558 24.689 7.4565 0.85950 0.9350
2024-01-11 2024-01-11 1.0987 159.71 1.9558 24.659 7.4568 0.86145 0.9338
... ... ... ... ... ... ... ... ...
2023-10-26 2023-10-26 1.0540 158.48 1.9558 24.714 7.4632 0.87170 0.9466
2023-10-25 2023-10-25 1.0576 158.55 1.9558 24.693 7.4639 0.87240 0.9474
2023-10-24 2023-10-24 1.0632 159.26 1.9558 24.659 7.4648 0.87025 0.9501
2023-10-23 2023-10-23 1.0597 158.91 1.9558 24.645 7.4634 0.87153 0.9461
2023-10-20 2023-10-20 1.0591 158.80 1.9558 24.704 7.4620 0.87213 0.9442

61 rows × 8 columns

df.query('USD > 1.105')
Time USD JPY BGN CZK DKK GBP CHF
Time
2023-12-28 2023-12-28 1.1114 156.57 1.9558 24.714 7.4545 0.8706 0.9302
2023-12-27 2023-12-27 1.1065 157.81 1.9558 24.673 7.4549 0.8683 0.9438
df.query('USD > 1.105 and JPY < 157')
Time USD JPY BGN CZK DKK GBP CHF
Time
2023-12-28 2023-12-28 1.1114 156.57 1.9558 24.714 7.4545 0.8706 0.9302
df.USD > 1.105 # boolean mask
Time
2024-01-17    False
2024-01-16    False
2024-01-15    False
2024-01-12    False
2024-01-11    False
              ...  
2023-10-26    False
2023-10-25    False
2023-10-24    False
2023-10-23    False
2023-10-20    False
Name: USD, Length: 61, dtype: bool
df[df.USD > 1.105]
Time USD JPY BGN CZK DKK GBP CHF
Time
2023-12-28 2023-12-28 1.1114 156.57 1.9558 24.714 7.4545 0.8706 0.9302
2023-12-27 2023-12-27 1.1065 157.81 1.9558 24.673 7.4549 0.8683 0.9438
mask1 = df.USD > 1.105
mask2 = df.JPY < 157
df[mask1 & mask2] # mask1 and mask2
Time USD JPY BGN CZK DKK GBP CHF
Time
2023-12-28 2023-12-28 1.1114 156.57 1.9558 24.714 7.4545 0.8706 0.9302
df[mask1 | mask2] # mask1 or mask2
Time USD JPY BGN CZK DKK GBP CHF
Time
2024-01-03 2024-01-03 1.0919 156.16 1.9558 24.675 7.4581 0.86470 0.9322
2024-01-02 2024-01-02 1.0956 155.68 1.9558 24.687 7.4551 0.86645 0.9305
2023-12-29 2023-12-29 1.1050 156.33 1.9558 24.724 7.4529 0.86905 0.9260
2023-12-28 2023-12-28 1.1114 156.57 1.9558 24.714 7.4545 0.87060 0.9302
2023-12-27 2023-12-27 1.1065 157.81 1.9558 24.673 7.4549 0.86830 0.9438
2023-12-22 2023-12-22 1.1023 156.66 1.9558 24.589 7.4560 0.86660 0.9417
2023-12-21 2023-12-21 1.0983 156.79 1.9558 24.481 7.4558 0.86805 0.9432
2023-12-18 2023-12-18 1.0918 155.95 1.9558 24.543 7.4549 0.86263 0.9480
2023-12-15 2023-12-15 1.0946 155.15 1.9558 24.477 7.4556 0.85833 0.9488
2023-12-14 2023-12-14 1.0919 154.80 1.9558 24.408 7.4566 0.85955 0.9490
2023-12-12 2023-12-12 1.0804 156.84 1.9558 24.420 7.4569 0.85928 0.9443
2023-12-08 2023-12-08 1.0777 155.53 1.9558 24.354 7.4558 0.85690 0.9438
2023-12-07 2023-12-07 1.0771 156.18 1.9558 24.356 7.4551 0.85750 0.9446