首页 文章

在Pyspark Dataframe上添加列

提问于
浏览
1

我有一个具有这种结构的Pyspark Dataframe:

+----+----+----+----+---+
|user| A/B|   C| A/B| C | 
+----+----+-------------+
|  1 |   0|   1|   1|  2| 
|  2 |   0|   2|   4|  0| 
+----+----+----+----+---+

我最初有两个数据帧,但我外部使用user作为键加入它们,因此也可能有空值 . 我找不到用相同名称对列进行求和的方法,以获得这样的数据帧:

+----+----+----+
|user| A/B|   C| 
+----+----+----+
|  1 |   1|   3| 
|  2 |   4|   2| 
+----+----+----+

另请注意,可能有许多相等的列,因此选择每列不是一个选项 . 在pandas中,可以使用“user”作为Index,然后添加两个数据帧 . 我怎么能在Spark上做到这一点?

1 回答

  • 1

    我有一个解决这个问题的方法

    val dataFrameOneColumns=df1.columns.map(a=>if(a.equals("user")) a else a+"_1")
    val updatedDF=df1.toDF(dataFrameOneColumns:_*)
    

    现在进行Join,然后out将包含具有不同名称的Values

    然后将列表的元组组合起来

    val newlist=df1.columns.filter(_.equals("user").zip(dataFrameOneColumns.filter(_.equals("user"))
    

    并且他们在每个元组中组合列的值并获得所需的输出!

    PS:我猜你可以写出合并的逻辑!所以我不是勺子喂!

相关问题