我在pyspark
中有一个类似下面的数据帧。在
+--------------------+--------------+------------+-----------+-----------+-----------+-----------+
| serial_number | rest_id | value | body | legs | face | idle |
+--------------------+--------------+------------+-----------+-----------+-----------+-----------+
| sn11 | rs1 | N | Y | N | N | acde |
| sn1 | rs1 | N | Y | N | N | den |
| sn1 | null | Y | N | Y | N | can |
| sn2 | rs2 | Y | Y | N | N | aeg |
| null | rs2 | N | Y | N | Y | ueg |
+--------------------+--------------+------------+-----------+-----------+-----------+-----------+
现在我想在检查一些列值的同时update
一些列。在
我想更新value
当任何给定的serial_number
或{Y
,那么该特定的serial_number
或{
我已经做了如下。在
^{pr2}$我得到了我想要的结果。在
现在我想对列body
、legs
和{
我可以对所有列individually
执行上述操作,我的意思是说3
连接语句。但是我想在一个语句中更新所有4
列。在
我怎么能做到呢?在
Expected result
+--------------------+--------------+------------+-----------+-----------+-----------+-----------+
| serial_number | rest_id | value | body | legs | face | idle |
+--------------------+--------------+------------+-----------+-----------+-----------+-----------+
| sn11 | rs1 | N | Y | N | N | acde |
| sn1 | rs1 | Y | Y | Y | N | den |
| sn1 | null | Y | Y | Y | N | can |
| sn2 | rs2 | Y | Y | N | Y | aeg |
| null | rs2 | Y | Y | N | Y | ueg |
+--------------------+--------------+------------+-----------+-----------+-----------+-----------+
您应该对
serial_number
和rest_id
列使用window
函数,以检查该组中的列中是否存在Y。(以下为解释意见)它应该给你
^{pr2}$我建议在两个循环中分别使用window函数,因为这可能会给大数据带来内存异常,因为两个窗口函数同时用于每一行
相关问题 更多 >
编程相关推荐