我有一个pyspark Dataframe df
:
我想按此顺序基于Type
列按比例分配项目:AAIC〉AAFC〉TBIC〉TBFC,其中使用RANK
列,即在上述订单组中具有较低优先级的项目。Type
列中除AAIC或AAFC TBIC或TBFC之外的任何值,我希望将其重新标记为NON
| 项目|类型|等级|
| - ------|- ------|- ------|
| 1个|AAIC公司|十一|
| 第二章|亚洲足球联合会|八个|
| 三个|TBIC公司|第二章|
| 四个|TBFC|1个|
| 五个|XYZ|五个|
| 六个|AAIC公司|七|
| 七|香港赛马会|十个|
| 八个|软件工程|三个|
| 九|TBIC公司|四个|
| 十个|亚洲足球联合会|九|
| 十一|亚洲足球联合会|六个|
所需的pyspark Dataframe df
:-
| 项目|类型|等级|新等级|
| - ------|- ------|- ------|- ------|
| 六个|AAIC公司|七|1个|
| 1个|AAIC公司|十一|第二章|
| 十一|亚洲足球联合会|六个|三个|
| 第二章|亚洲足球联合会|八个|四个|
| 十个|亚洲足球联合会|九|五个|
| 三个|TBIC公司|第二章|六个|
| 九|TBIC公司|四个|七|
| 四个|TBFC|1个|八个|
| 八个|无|三个|九|
| 五个|无|五个|十个|
| 七|无|十个|十一|
1条答案
按热度按时间k10s72fa1#
您可以检查此代码:
编码的优先级是硬编码的,如果值比较多,可能会很难维护,如果需要更灵活的话,可以调整这部分
我将所有记录移动到一个分区以计算正确的row_order。这是一个常见问题,很难以分布式方式计算具有给定顺序的一致id。如果您的数据集很大,则可能需要考虑其他问题,可能会更复杂
输出: