1.6 Bitwise operators
To build more complicated expressions involving column comparisons, there are two bitwise operators.
The & operator means ‘and’ and the | operator (vertical bar, not uppercase letter ‘i’) means ‘or’. So, for example the expression:
(df['Country'] >= 'Latvia') & (df['Country'] <= 'Sweden')
will evaluate to a series containing Boolean values where the values areTrue only if the equivalent rows in the dataframe contain the countries ‘Latvia’ to ‘Sweden’, inclusive. However, the following expression which uses | (or) rather than & (and):
(df['Country'] >= 'Latvia') | (df['Country'] <= 'Sweden')
will evaluate to True for all countries, because every country comes alphabetically after ‘Latvia’ (e.g. the ‘UK’) or before 'Sweden' (e.g. ‘Brazil’).
Note the round brackets around each comparison. Without them you will get an error.
The whole expression with multiple comparisons has to be put within df[…] to get a dataframe with only those rows that match the condition.
As a further example, using different columns, it is relatively easy to find the rows in df where 'Population (1000s)' is greater than 80000 and where 'TB deaths' are greater than 10000.
df[(df['Population (1000s)'] > 80000) & (df['TB deaths'] > 10000)]
|Country||Population (1000s)||TB deaths|
These expressions can get long and complicated, making it easy to miss a crucial round or square bracket. In those cases it is best to break up the expression into small steps. The previous example could also be written as:
population = df['Population (1000s)']
deaths = df['TB deaths']
df[(population > 80000) & (deaths > 10000)]
Exercise 3 Bitwise operators
Complete Exercise 3 in the Exercise notebook 2.