Что обозначает тильда в pandas?

Что значит в данном случае тильда?

df = df.loc[~non_numberic_profits]

В столбец non_numberic_profits были заданы строки, которые не отвечают типу данных float. То есть, не цифры, а какие-то буквы или символы.

Что в данном случае значит тильда? Какую функцию она выполняет?

После данной сроки последовала следующая строка кода `

df.profit = df.profit.apply(pd.to_numeric)

Как я понимаю, она преобразовывает именно в тип данных float. Но что она преобразовывает? Оставшиеся значения? Не совсем понимаю, что выполняет оператор тильда в данном случае.


Ответы (1 шт):

Автор решения: MaxU

Это операция not, которая часто применяется для инвертирования логических столбцов / значений.

Из документации:

Another common operation is the use of boolean vectors to filter the data. The operators are: | for or, & for and, and ~ for not.

Пример:

In [475]: s = pd.Series(np.random.choice([True, False], size=5))

In [476]: s
Out[476]: 
0     True
1     True
2    False
3     True
4     True
dtype: bool

In [477]: ~s
Out[477]: 
0    False
1    False
2     True
3    False
4    False
dtype: bool

UPD: что делает команда df = df.loc[~non_numberic_profits]:

данная команда фильтрует фрейм таким образом что выбираются только те строки фрейма для которых в соответствующей позиции non_numberic_profits стоит значение False.

NOTE: длина non_numberic_profits должна совпадать с длиной (числом строк) df.


UPD2: что делает команда df.profit = df.profit.apply(pd.to_numeric):

это не очень эффективный способ преобразовать все значения столбца к числовому типу данных int64 или float64.

Лучше это делать так:

df["profit"] = pd.to_numeric(df["profit"], errors="coerce")
→ Ссылка