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
。
我试图在这里遵循 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
解决方案
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()
推荐阅读
- authentication - 我们应该与访问令牌一起更新刷新令牌吗?
- generics - 使用内部自动类型定义 Nim 概念时遇到问题
- flutter - 使用 Flutter Hooks 实现 Flutter 过渡
- c++ - 在基类和派生类中分离 ODE 和 ODE 求解器
- api - 万维网上的一切都使用 REST 吗?
- javascript - 使用主键是否是一个好的解决方案
- html - 使用启动引导程序 5 免费管理模板无法单击单选按钮
- python - django ManyToManyField 中的 to_field 是否有替代方法?
- scala - ScalaTest 错误对象 flatspec 不是包 org.scalatest 的成员
- c++ - 如何在 C++ 中查找单个元素的字符数组位置