spark dataframe笔记 -- 按照dataframe某一列的数值排序,并增加一列索引(1)升序排

脚本如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
@author:
@contact:
@time:
@context:按照dataframe某一列的数值排序,并增加一列索引(1)升序排
"""
from __future__ import print_function
from pyspark.sql import SparkSession
import os, time,sys
reload(sys)
sys.setdefaultencoding("utf-8")
from pyspark.sql import Row
from pyspark.sql import functions as F
from pyspark.sql.window import Window, WindowSpec

os.environ['SPARK_HOME'] = "E:/data_page/spark-2.0.2-bin-hadoop2.7"
spark = SparkSession.builder.appName("indexOrder").getOrCreate()
sc = spark.sparkContext
Df1 = sc.parallelize(range(0, 11)).map(lambda x: Row(Rank=x)).toDF()
Df1.show()
df2 = Df1.withColumn("zero", F.abs(Df1.Rank) * 0)
df2.show()
df3 = df2.select("Rank",F.row_number().over(Window.partitionBy("zero").orderBy("Rank")).alias("rownumber"))
df3.show()
time.sleep(1)
spark.stop()

结果如下:

+----+
|Rank|
+----+
|   0|
|   1|
|   2|
|   3|
|   4|
|   5|
|   6|
|   7|
|   8|
|   9|
|  10|
+----+

+----+----+
|Rank|zero|
+----+----+
|   0|   0|
|   1|   0|
|   2|   0|
|   3|   0|
|   4|   0|
|   5|   0|
|   6|   0|
|   7|   0|
|   8|   0|
|   9|   0|
|  10|   0|
+----+----+

+----+---------+
|Rank|rownumber|
+----+---------+
|   0|        1|
|   1|        2|
|   2|        3|
|   3|        4|
|   4|        5|
|   5|        6|
|   6|        7|
|   7|        8|
|   8|        9|
|   9|       10|
|  10|       11|
+----+---------+
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值