Home > Enterprise >  Cracking my head over the usage of tilde in Pandas
Cracking my head over the usage of tilde in Pandas

Time:07-17

I read numerous similar posts about the subject here but still cannot make anything out of this.

I have this simple list:

mask =[False, False, False, False, True, True, False]

And am attempting to negate this list via the ~ operator (this is the exercise I have been given). Though:

neg_mask = ~mask

gives me the following error:

TypeError                                 Traceback (most recent call last)
<ipython-input-111-b1d572533400> in <module>
----> 1 neg_mask =~mask

TypeError: bad operand type for unary ~: 'list'

Tried on python and ipython 3. Well, according to the instructions this is supposed to work.

CodePudding user response:

To work with the ~ operator you first need to generate a DataFrame like for example:

import pandas as pd

mask = [False, False, False, False, True, True, False]
mask = pd.DataFrame(mask, columns=['mask'])
mask = ~mask
print(mask)

Output:

    mask
0   True
1   True
2   True
3   True
4  False
5  False
6   True

If you want directly via the list, do a list comprehension working with not:

mask = [False, False, False, False, True, True, False]
mask = [not i for i in mask]
print(mask)

Output:

[True, True, True, True, False, False, True]

CodePudding user response:

The operator ~ does not work for a built-in Python list but does work for a Pandas DataFrame.

mask = [False, False, False, False, True, True, False]
df = pd.DataFrame(mask)

~df

#        0
# 0   True
# 1   True
# 2   True
# 3   True
# 4  False
# 5  False
# 6   True

CodePudding user response:

Operations on pandas' Series and DataFrames are vectorized via NumPy. You can read about NumPy's benefits over Python's standard data structures here.

For completion's sake, here is an example of bitwise NOT (~) with just an NDArray.

import numpy as np

mask = np.array([False, False, False, False, True, True, False])
inverted = ~mask

print(mask)
print(inverted)

Which prints:

[False False False False True True False]
[True True True True False False True]
  • Related