I'm new to python/pandas and came across a code snippet.
df = df[~df['InvoiceNo'].str.contains('C')]
Would be much obliged if I could know what is the tilde sign's usage in this context?
tilde ~ is a bitwise operator. If the operand is 1, it returns 0, and if 0, it returns 1. So you will get the InvoiceNo values in the df that does not contain the string 'C'
The bitwise operator ~ (pronounced as tilde) is a complement operator. It takes one bit operand and returns its complement. If the operand is 1, it returns 0, and if it is 0, it returns 1.
Pandas: Using the tilde operator to return inverse data with two filters.
It means bitwise not, inversing boolean mask - False
s to True
s and True
s to False
s.
Sample:
df = pd.DataFrame({'InvoiceNo': ['aaC','ff','lC'], 'a':[1,2,5]}) print (df) InvoiceNo a 0 aaC 1 1 ff 2 2 lC 5 #check if column contains C print (df['InvoiceNo'].str.contains('C')) 0 True 1 False 2 True Name: InvoiceNo, dtype: bool #inversing mask print (~df['InvoiceNo'].str.contains('C')) 0 False 1 True 2 False Name: InvoiceNo, dtype: bool
Filter by boolean indexing
:
df = df[~df['InvoiceNo'].str.contains('C')] print (df) InvoiceNo a 1 ff 2
So output is all rows of DataFrame, which not contains C
in column InvoiceNo
.
It's used to invert boolean Series, see pandas-doc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With