首页 > 解决方案 > 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

我试图在这里遵循 Nicky 的回答How to skip more than one lines of header in RDD in Spark

数据看起来像(但会有多列我需要做同样的事情):

customer_id
1
2
3
customer_id
4
customer_id
5

我希望结果为:

1
2
3
4
5

标签: apache-sparkpyspark

解决方案


take数据框结果上list(Row),我们需要获取值使用 [0][0] 和 Infilter子句使用column_namenot 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()

推荐阅读