我有一个Pyspark数据帧,如下所示:
+------------+-------------+--------------------+
|package_id | location | package_scan_code |
+------------+-------------+--------------------+
|123 | Denver |05 |
|123 | LosAngeles |03 |
|123 | Dallas |09 |
|123 | Vail |02 |
|456 | Jacksonville|05 |
|456 | Nashville |09 |
|456 | Memphis |03 |
“包扫描码”03代表包裹的来源。在
我想在这个数据帧中添加一列“origin”,这样对于每个包(由“package_id”标识),新添加的origin列中的值将与“package_scan_code”03对应。在
在上述情况下,有两个唯一的包123和456,它们分别来自洛杉矶和孟菲斯(对应包的扫描代码03)。在
所以我希望我的输出如下:
^{pr2}$如何在Pyspark中实现这一点?我尝试了.withColumn
方法,但是我不能正确地处理条件。在
不管数据帧中的每个
package_id
发生package_scan_code=03
多少次,此代码都应该可以工作。我又添加了一个(123,'LosAngeles','03')
来演示-步骤1:创建数据帧
第2步:创建
^{pr2}$package_id
和location
的字典。在第3步:创建列,映射字典。在
按
package_scan_code == '03'
筛选数据帧,然后与原始数据帧连接:注意:这假设您最多有一个
package_scan_code
等于03
,否则逻辑将不正确,您需要重新考虑如何定义origin
。在相关问题 更多 >
编程相关推荐