apache-spark - 使用 pyspark 以交替的男性女性格式显示表格的性别
问题描述
所以我有这张表,我试图对它进行排序,使“性别”列的值是交替的。下面是有问题的表格
+--------------------+------+---+
| Employee_Name|salary|Sex|
+--------------------+------+---+
| Adinolfi, Wilson K| 62506| M |
|Ait Sidi, Karthik...|104437| M |
| Akinkuolie, Sarah| 64955| F|
| Alagbe,Trina| 64991| F|
| Anderson, Carol | 50825| F|
| Anderson, Linda | 57568| F|
| Andreola, Colby| 95660| F|
| Athwal, Sam| 59365| M |
| Bachiochi, Linda| 47837| F|
| Bacong, Alejandro | 50178| M |
|Baczenski, Rachael | 54670| F|
| Barbara, Thomas| 47211| M |
| Barbossa, Hector| 92328| M |
|Barone, Francesco A| 58709| M |
| Barton, Nader| 52505| M |
| Bates, Norman| 57834| M |
| Beak, Kimberly | 70131| F|
| Beatrice, Courtney | 59026| F|
| Becker, Renee|110000| F|
| Becker, Scott| 53250| M |
+--------------------+------+---+
向我提出的问题是写一个这样的声明:
+---+-------+
|sex|EMpName|
+---+-------+
| M |Kevin |
| F |Carol |
| M |Josh |
| F |Linda |
| M |Sam |
| F |Sam |
+---+-------+
请帮助,任何提示或概念将不胜感激。
解决方案
您需要添加一个“订单”列才能获得预期的结果。这是一个解决方案row_number
。
from pyspark.sql import functions as F, Window
# assuming df is your dataframe
df.withColumn(
"ordering",
F.row_number().over(Window.partitionBy("sex").orderBy(F.lit(1))),
).orderBy("ordering", "sex").drop("ordering").show()
推荐阅读
- c++ - 在堆或堆栈上分配的 std::queue 内存
- java - 将pdf文件加载到已经构建的jar
- c# - 如何在 SpringBoot 控制器中使用 WebClient.UploadFile (.NET) 上传的文件?
- html - svg 动画 奇怪的行为
- c# - 无法在 Web Api 控制器中设置 HttpResponseMessage 的 RequestUri
- java - 如何在 Java 中将汇编代码转换为机器代码
- r - 使用 R 根据公共变量组合数据框中的行
- c# - 带有批量电子邮件的 SmtpClient SendMailAsync 成功发送了大约 1200 封,其余的都失败了。任何指针?
- php - 使用ajax和php按价格排序
- c - 设置同步文件写入超时而不用 time() 浪费微秒