У меня есть фрейм данных, содержащий несколько адресов Mac. Мне нужно отфильтровать адреса Mac, начинающиеся с «ZBB». Я использую решение, которое имеет для меня смысл:

import pyspark.sql.functions as f
dffinal = df.filter(f.col("mac_address").startswith("ZBB") === false)

К сожалению, это решение не работает, поскольку оно не распознает ===, когда я помещаю ==, тогда false не определяется. Я пробую решения из https://sparkbyexamples.com/spark/spark -filter-startwith-endwith-examples /, к сожалению, что-то пошло не так. Может ли кто-нибудь указать мне на рабочее решение?

0
Martin Walczyński 17 Ноя 2021 в 15:58

1 ответ

Лучший ответ

Логические значения в python начинаются с заглавной буквы, поэтому True & False. Python не знает тройного равного ===.

Вы можете решить вашу проблему так, как сейчас.

df.filter(f.col('mac_address').startswith('ZBB') == False)

Или используйте тильду ~, которая выполняет побитовое НЕ, но, на мой взгляд, может быть менее читабельной.

df.filter(~f.col('mac_address').startswith('ZBB'))
1
ScootCork 17 Ноя 2021 в 16:30
Большое спасибо! Сценарии на Python для меня все еще немного в новинку, поэтому я часто забываю, что это язык, чувствительный к регистру;)
 – 
Martin Walczyński
18 Ноя 2021 в 11:52