在 Scala/Spark 中,有一个数据框:
val dfIn = sqlContext.createDataFrame(Seq(
("r0", 0, 2, 3),
("r1", 1, 0, 0),
("r2", 0, 2, 2))).toDF("id", "c0", "c1", "c2")
我想计算一个新列,其中包含与最大值对应的列maxCol
的名称(对于每一行)。在这个例子中,输出应该是:
+---+---+---+---+------+
| id| c0| c1| c2|maxCol|
+---+---+---+---+------+
| r0| 0| 2| 3| c2|
| r1| 1| 0| 0| c0|
| r2| 0| 2| 2| c1|
+---+---+---+---+------+
实际上数据框有60多列。因此需要一个通用的解决方案。
Python Pandas 中的等价物(是的,我知道,我应该与 pyspark 进行比较......)可能是:
dfOut = pd.concat([dfIn, dfIn.idxmax(axis=1).rename('maxCol')], axis=1)