我有一个动态创建的spark dataframe,当任何一列为“false”时,我需要过滤dataframe,并将其存储在一个表中,而将没有列为false的行存储在一个表中。列名和列数永远不会被知道。
例如,如果我的table是
Col1 Col2 Col3
Row1 True False False
Row2 True True True
Row3 False False True
Row4 False False False
输出应为表1:
Col1 Col2 Col3
Row1 True False False
Row3 False False True
Row4 False False False
和表2
Col1 Col2 Col3
Row2 True True True
我试过:
val columns: Array[String] = testDF.columns
val seqDfs: Seq[DataFrame] = columns.map(name => df.filter(s"$name == 'False'"))
val output: DataFrame = seqDfs.reduceRight(_ union _)
但它会返回大量重复值,即使清除重复值,也无助于创建表2,因为表2中的所有行都必须为真。
任何帮助都将不胜感激。谢谢!
1条答案
按热度按时间8fsztsew1#
下面是创建Dataframe的代码:
让我们附加一个
all_true
列:以下是包含所有真值的Dataframe:
以下是值不全为真的Dataframe:
好问题,欢迎使用stackoverflow;)
顺便说一句,spark daria有一个
multiEquals()
函数中我抓取了这个代码,看到这个文件。