jk1*_*093 5 apache-spark apache-spark-sql pyspark pyspark-sql
我有一个 pyspark 数据框,如:
A B C
1 不适用 9
4 2 5
6 4 2
5 1 不适用
我想删除包含值“NA”的行。在这种情况下,第一行和最后一行。如何使用 Python 和 Spark 实现这一点?
根据评论更新:寻找一种解决方案,该解决方案可以删除在许多列中的任何列中包含字符串:NA 的行。
只需使用数据框过滤器表达式:
l = [('1','NA','9')
,('4','2', '5')
,('6','4','2')
,('5','NA','1')]
df = spark.createDataFrame(l,['A','B','C'])
#The following command requires that the checked columns are strings!
df = df.filter((df.A != 'NA') & (df.B != 'NA') & (df.C != 'NA'))
df.show()
+---+---+---+
| A| B| C|
+---+---+---+
| 4| 2| 5|
| 6| 4| 2|
+---+---+---+
Run Code Online (Sandbox Code Playgroud)
@bluephantom:如果您有数百列,只需通过列表理解生成一个字符串表达式:
#In my example are columns need to be checked
listOfRelevantStringColumns = df.columns
expr = ' and '.join('(%s != "NA")' % col_name for col_name in listOfRelevantStringColumns)
df.filter(expr).show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26831 次 |
| 最近记录: |