#sql #dataframe #apache-spark #pyspark #apache-spark-sql
#sql #фрейм данных #apache-spark #pyspark #apache-spark-sql
Вопрос:
У меня есть фрейм данных pyspark. Как я могу выбрать столбец, в котором в другом столбце мне нужны конкретные вещи. предположим, у меня n столбцов. для 2 столбцов у меня есть
A. B.
a b
a c
d f
Я хочу весь столбец B. где находится столбец A
a
. так
A. B.
a b
a c
Комментарии:
1. используйте
df.filter("A='a'")
Ответ №1:
Это просто filter
:
df2 = df.filter("A = 'a'")
который бывает разных видов, например
df2 = df.filter(df.A == 'a')
df2 = df.filter(df['A'] == 'a')
или
import pyspark.sql.functions as F
df2 = df.filter(F.col('A') == 'a')
Комментарии:
1. после этого я могу выбрать B
2. Вы можете выбрать B, используя df2.B или df2[‘B’] @elham
3. Исключение AnalysisException: не удается разрешить ‘(
workexperiences
.location
= ‘US’)’ из-за несоответствия типов данных: разные типы в ‘(workexperiences
.location
= ‘US’)’ (array<string> и string).; строка 1 поз 0;4. @elham вы пытаетесь отфильтровать столбец типа массива, используя одну строку. Вы не можете сравнить массив со строкой. Если вы хотите отфильтровать строки с помощью массива, содержащего определенную строку, вы можете сделать
df2 = df.filter("array_contains(workexperiences.location, 'US')")