TypeError: неверный тип операнда для унарного ~: float

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

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

Почему .str.contains() возвращает число с плавающей запятой? Что мне здесь делать?

каков результат для df ["столбец"]. dtypes

BENY 12.09.2018 16:37

@kindall О, так это просто приоритет оператора? Попробую df[~(df["column"].str.contains("Total"))]

fredley 12.09.2018 16:40

После некоторого тестирования, похоже, это не так, извините за отвлекающий маневр.

kindall 12.09.2018 17:07
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
41
3
35 438
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Думаю, есть значения 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 - это список слов. Это приводит к ошибке

Alex Ruiz 21.07.2021 20:36

Итак, я решил свою проблему. Это был неправильный источник моего CSV-файла. Я не очистил все ячейки, поэтому панды принимали некоторые из них как NaN.

Alex Ruiz 21.07.2021 21:03

В этом типе мы увидим, что у нас есть некоторые значения столбцов, которые являются nan или пустыми, поэтому мы не смогли это сделать. Следовательно, когда вы применили код, приведенный ниже, он будет работать.

df_pcc_mod = df_pcc_mod[~df_pcc_mod['Invoice'].str.contains('Reversed',na=False)]

TypeError: неверный тип операнда для унарного ~: 'float'

aryan aryan 08.09.2021 07:25

Другие вопросы по теме