df = df[~df["column"].str.contains("Total")]
TypeError: bad operand type for unary ~: 'float'
Почему .str.contains() возвращает число с плавающей запятой? Что мне здесь делать?
@kindall О, так это просто приоритет оператора? Попробую df[~(df["column"].str.contains("Total"))]
После некоторого тестирования, похоже, это не так, извините за отвлекающий маневр.






Думаю, есть значения NaNs, поэтому нужно указать параметр 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
У меня такая же ошибка, и я в основном использую .contains для определенного столбца моего df. Я проверил его, и в нем нет NaN. Я добавил na = False, и ошибка исчезла. Как я могу объяснить полученную ошибку, даже если столбец, с которым я работаю, представляет собой строку без NaN? Итак, я использую эту строку: df_main = df_main [~ df_main ['Категория']. Str.contains ('|' .join (searchfor))], где searchfor - это список слов. Это приводит к ошибке
Итак, я решил свою проблему. Это был неправильный источник моего CSV-файла. Я не очистил все ячейки, поэтому панды принимали некоторые из них как NaN.
В этом типе мы увидим, что у нас есть некоторые значения столбцов, которые являются nan или пустыми, поэтому мы не смогли это сделать. Следовательно, когда вы применили код, приведенный ниже, он будет работать.
df_pcc_mod = df_pcc_mod[~df_pcc_mod['Invoice'].str.contains('Reversed',na=False)]
TypeError: неверный тип операнда для унарного ~: 'float'
каков результат для df ["столбец"]. dtypes