在pysparkDataframe上添加列

dm7nw8vv  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(451)

我有一个PyparkDataframe,它的结构如下:

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

我最初有两个Dataframe,但我使用user作为键连接它们,所以也可能有空值。为了得到这样的Dataframe,我找不到对同名列求和的方法:

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

还要注意,可能有许多相等的列,因此按字面意思选择每个列不是一个选项。在pandas中,可以使用“user”作为索引,然后添加两个Dataframe。我怎么能在spark上做这个?

eiee3dmh

eiee3dmh1#

我有办法解决这个问题

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

现在进行连接,那么out将包含具有不同名称的值
然后将列表的元组组合起来

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

它们将每个元组中的列的值组合起来,得到所需的输出!
附言:我猜你能写出组合的逻辑!所以我不是在用勺子喂!

相关问题