TypeError: bad operand type for unary ~: float

Question:

df = df[~df["column"].str.contains("Total")]

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

Why does .str.contains() return a float? What should I be doing here?

Asked By: fredley

||

Answers:

I think there are NaNs values, so need specify parameter na:

df = pd.DataFrame({
    'column': ['Total','a',np.nan],
    'B': list(range(3))
})
print (df)
  column  B
0  Total  0
1      a  1
2    NaN  2

df = df[~df["column"].str.contains("Total", na=False)]
print (df)
  column  B
1      a  1
2    NaN  2
Answered By: jezrael

In this type, we will see that we have some column values that are nan or empty so we were not able to do this. Hence, when you applied the code as here given below it, will work.

df_pcc_mod = df_pcc_mod[~df_pcc_mod['Invoice'].str.contains('Reversed',na=False)]
Answered By: aryan aryan
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.