PySpark-如何从此数据框中过滤行

时间:2020-07-09 19:01:35

标签: apache-spark pyspark

我正在尝试从文件中读取第一行,然后从数据框中过滤该行。

我正在使用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

我正尝试在这里{@ 3}跟随尼基的回答

数据看起来像(但将有多个列,我需要为此做同样的事情):

customer_id
1
2
3
customer_id
4
customer_id
5

我希望结果为

1
2
3
4
5

1 个答案:

答案 0 :(得分:2)

数据帧结果take进行

list(Row) ,我们需要使用[0] [0]和 在 filter 子句中,使用 column_name 并将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()