我正在尝试从文件中读取第一行,然后从数据框中过滤该行。
我正在使用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
答案 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()