PySpark - Как отфильтровать строку из этого фрейма данных - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь прочитать первую строку из файла, а затем отфильтровать ее из фрейма данных.

Я использую take(1) для чтения первой строки. Затем я хочу отфильтровать это из фрейма данных (он может появляться несколько раз в наборе данных).

from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession

sc = SparkContext(appName = "solution01")
spark = SparkSession(sc)

df1 = spark.read.csv("/Users/abc/test.csv")
header = df1.take(1)
print(header)

final_df = df1.filter(lambda x: x != header)
final_df.show()

Однако я получаю следующую ошибку TypeError: condition should be string or Column.

Я пытался следовать ответ от Ники здесь Как пропустить более одной строки заголовка в RDD в Spark

Данные выглядят так (но будут иметь несколько столбцов, для которых мне нужно сделать то же самое):

customer_id
1
2
3
customer_id
4
customer_id
5

Мне нужен результат как:

1
2
3
4
5

1 Ответ

2 голосов
/ 09 июля 2020

take на кадре данных результатах list(Row) нам нужно получить значение use [0] [0] и In filter использование предложения имя_столбца и отфильтруйте строки от not equal до header

header = df1.take(1)[0][0]
#filter out rows that are not equal to header
final_df = df1.filter(col("<col_name>") != header)
final_df.show()
...