0
私はN列のデータフレームを持っており、キーが列名でタプル(文字列、ブール値)を持つハッシュマップを持っています。特定の列に適用関数を適用します。
タプルと比較して、ある種の条件を満たす各列に対して、私はその列のすべての要素に関数を適用する必要があります。
最後に、列名に応じていくつかの条件を満たすデータフレームの一部の列を変更する必要があります。
これを行うにはどのような方法が最適ですか?
私はN列のデータフレームを持っており、キーが列名でタプル(文字列、ブール値)を持つハッシュマップを持っています。特定の列に適用関数を適用します。
タプルと比較して、ある種の条件を満たす各列に対して、私はその列のすべての要素に関数を適用する必要があります。
最後に、列名に応じていくつかの条件を満たすデータフレームの一部の列を変更する必要があります。
これを行うにはどのような方法が最適ですか?
あなたのハッシュマップでfoldLeftを試すことができます。ここではScalaのための例です:
import org.apache.spark.sql.Column
import org.apache.spark.sql.functions._
val colMap = Map(
"col1" -> ("a", true),
"col2" -> ("a", true),
"col3" -> ("a", false)
)
val df = Seq((1, 1, 1), (2, 2, 2)).toDF("col1", "col2", "col3")
def verify(strValue: String, boolValue: Boolean): Boolean = {
strValue == "a" && boolValue
}
def processColumn(c: Column): Column = c * 2
colMap.foldLeft(df) {
case (curDF, (colName, (strValue, boolValue))) =>
if(verify(strValue, boolValue)) curDF.withColumn(colName, processColumn(col(colName)))
else curDF
}
あなたがやろうとしているものは不明です。より具体的になり、サンプルデータ、期待される出力、実際のコードを共有できますか? – mtoto
@mtotoデータフレームの配列からデータフレームを作成するにはどうすればよいですか? –
Scala、Java、Python? –