Jak poprawnie filtrować dataframe?

Jak poprawnie filtrować dataframe?
adams0
  • Rejestracja:prawie 8 lat
  • Ostatnio:4 minuty
  • Postów:318
0

Cześć.

Od niedawna uczę się Sparka. Słabo odnajduję się w Pythonie.

Wiem że df.where() przyjmuje składnie z SQL'a i natywną.

Taki kod mi działa:

Kopiuj
df = df.select('Index', 'First Name', 'Last Name').where("Index > 95 AND Index < 99")

Taki również:

Kopiuj
df = df.select('Index', 'First Name', 'Last Name').where((df["Index"] > 95) & (df["Index"] < 99))

Dziwi mnie to że gdy używam && mam błąd i gdy pomijam nawiasy też mam błąd.
Z tej strony czytam że używanie && jest poprawne: https://sparkbyexamples.com/spark/spark-dataframe-where-to-filter-rows/

Czuję że mam fundamentalne braki.
Dla czego używanie && lub brak () powoduje błąd?

edytowany 1x, ostatnio: Riddle
testowy_user
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 miesiące
  • Postów:160
1

Ta stronka nie jest czasem odnośnie Scali?

ledi12
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Wrocław
2

W funkcjach typu where czy filter powinieneś odwoływać się do konkretnego obiektu kolumny przy pomocy funkcji pyspark.sql.functions.col. Odwołujesz się wtedy do konkretnej kolumny. Różnica między bezpośrednim wywołaniem z df to inne calle pod spodem. Już tak nie pamiętam szczegółów. Generalnie jest to dobra praktyka w przypadku chainingu, czyli tworzenia kolejnych elementów łańcucha danych w df.

Kopiuj
df = (df
  .select('Index', 'First Name', 'Last Name')
  .where(
    (col("index") > 95) &
    (col("Index") < 99))
  )

Anyway powyższe można zrobić bez &:

Kopiuj
  .where(
    (95 < col("index") < 99)
  )

Robię http response status cody w martwych ciągach
edytowany 1x, ostatnio: ledi12
adams0
  • Rejestracja:prawie 8 lat
  • Ostatnio:4 minuty
  • Postów:318
0

Pierwsze działa, ale drugie:

Kopiuj
  .where(
    (95 < col("index") < 99)
  )

Powoduje błąd:
ValueError: Cannot convert column into bool: please use '&' for 'and', '|' for 'or', '~' for 'not' when building DataFrame boolean expressions.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.