Pyspark数据框
Tick | Long Position | Short Position
ADM | $25.5 | $12.2
INT | $300 | $120
CITI | $-12 | $9.1
我需要从“好仓”和“空仓”中选择前三名。从上面我想要的数据来看,将会像下面这样。怎么做?
Tick | Position | PnL
INT | Long | $300
INT | Short | $120
ADM | Long | $25.5
答案 0 :(得分:1)
我的最初想法是将两列合并并在输出的结构中创建一个数据框,然后取前3位。我只是在Scala中尝试过,它也可以与pyspark一起使用。
val y = someDF.select("Tick", "Long").withColumn("type", lit("Long")).withColumnRenamed("Long", "PnL")
val z = someDF.select("Tick", "Short").withColumn("type", lit("Short")).withColumnRenamed("Short", "PnL")
println(y.union(z).sort(desc("PnL")).take(3))
由于您正在使用spark API进行所有操作,因此我认为它也应为您提供良好的性能。让我知道事情的后续!