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】:take
在 dataframe 结果上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 - 如何根据列中的两个值从数据框中过滤出连续的行块