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

Posted

技术标签:

【中文标题】PySpark-如何从此数据框中过滤行【英文标题】:PySpark- How to filter row from this dataframe 【发布时间】:2020-07-09 19:01:35 【问题描述】:

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

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

我试图在这里How to skip more then one lines of header in RDD in Spark 关注 Nicky 的回答

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

customer_id
1
2
3
customer_id
4
customer_id
5

我想要的结果是:

1
2
3
4
5

【问题讨论】:

【参考方案1】:

takedataframe 结果上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()

【讨论】:

以上是关于PySpark-如何从此数据框中过滤行的主要内容,如果未能解决你的问题,请参考以下文章

PySpark - 如何根据列中的两个值从数据框中过滤出连续的行块

Pyspark Dataframe - 如何过滤掉另一个数据框中匹配的记录?

如何使用模式匹配从 pyspark 数据框中删除行?

如何有效地将 PySpark 数据框中的行相乘?

如何从pyspark中的数据框中选择一系列行

过滤pySpark数据框中的日期列记录