如何通过Kotlin Dataframe内置方法实现两列笛卡尔积?
Kotlin DataFrame 生成两列笛卡尔积的专属方法
有的,Kotlin DataFrame 提供了专属方法来生成笛卡尔积,无需转成原生集合操作,以下是两种常用实现方式:
1. 跨DataFrame的交叉连接(crossJoin)
如果两列分别来自两个独立的DataFrame,直接使用crossJoin方法即可得到笛卡尔积结果,效果等价于Pandas中merge(how='cross'):
import org.jetbrains.kotlinx.dataframe.api.* val dfA = dataFrameOf("colA")(1, 2, 3) val dfB = dataFrameOf("colB")("x", "y") val cartesianResult = dfA.crossJoin(dfB)
执行后cartesianResult会包含所有(colA, colB)的组合值对。
2. 单DataFrame内两列的笛卡尔积
如果目标两列在同一个DataFrame中,可先将两列拆分为独立的DataFrame(按需去重),再执行交叉连接:
val sourceDf = dataFrameOf("colA", "colB")(1, "x", 2, "y", 3, "x") // 提取两列并去重(不需要去重可去掉distinct()) val colADf = sourceDf.select("colA").distinct() val colBDf = sourceDf.select("colB").distinct() val cartesianResult = colADf.crossJoin(colBDf)
crossJoin是Kotlin DataFrame专门用于生成笛卡尔积的API,相比转原生集合的方式,代码更简洁且贴合DataFrame的操作范式。
内容的提问来源于stack exchange,提问作者czerny
相关产品推荐
相关产品推荐

