我从这个Dataframe开始
DF1
+----+-------+-------+-------+
|name | type |item1 | item2 |
+-----+-------+------+-------+
|apple|fruit |apple1|apple2 |
|beans|vege |beans1|beans2 |
|beef |meat |beef1 |beef2 |
|kiwi |fruit |kiwi1 |kiwi2 |
|pork |meat |pork1 |pork2 |
+-----+-------+--------------+
现在我想根据df2中“type”列的列值填充一个名为“prop”的列。例如,
If "type"== "fruit" then "prop"="item1"
If "type"== "vege" then "prop"="item1"
If "type"== "meat" then "prop"="item2"
最好的办法是什么?我在考虑根据每个“类型”进行过滤,填充“prop”列,然后连接生成的Dataframe。那似乎效率不高。
DF2
+----+-------+-------+-------+-------+
|name | type |item1 | item2 | prop |
+-----+-------+------+-------+-------+
|apple|fruit |apple1|apple2 |apple1 |
|beans|vege |beans1|beans2 |beans1 |
|beef |meat |beef1 |beef2 |beef2 |
|kiwi |fruit |kiwi1 |kiwi2 |kiwi1 |
|pork |meat |pork1 |pork2 |pork2 |
+-----+-------+--------------+-------+
2条答案
按热度按时间nmpmafwu1#
使用
when+otherwise
这种情况下的声明是非常有效的Spark。qyyhg6bp2#
它可以通过链接来完成
when
以及otherwise
如下所示