Как я могу выбрать столбец, в котором в другом столбце мне нужны конкретные вещи

#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')")