pyspark 保留小数位数-笔记

pyspark中对于数值类型的值进行小数位数的保存可以通过两种方式处理,一个是select中结合functions里的bround,另一个是selectExpr中的结合round。 pyspark.sql中的functions.bround进行处理。 

方式1 : functions.bround('columnName',scale=value)

scale表示保留的小数位数,四舍五入。

#构建dataframe
rdd = sc.parallelize([("Sam", 28, 88.52, "M"),
                      ("Flora", 28, 90.55, "F"),
                      ("Mey", 1, None, "M"),
                      ("Chery", 7, 80.23, "F")])
test = rdd.toDF(["name", "age", "score", "sex"])
test.show()

from pyspark.sql import functions 
test2= test.select('name','age',functions.bround('score',scale=1).alias('socre'),'sex') # 进行了四舍五入的保留小数位数,scale表示保留的小数位数
test2.show() 

结果:score列 只保留1位小数了

+-----+---+-----+---+
| name|age|socre|sex|
+-----+---+-----+---+
|  Sam| 28| 88.5|  M|
|Flora| 28| 90.6|  F|
|  Mey|  1| null|  M|
|Chery|  7| 80.2|  F|
+-----+---+-----+---+

方式2 selectExpr中 round 

## selectExpr中 round 
test3 = test.selectExpr('name','age','round(score,1) as score','sex')
test3.show()

结果同上: 

+-----+---+-----+---+
| name|age|score|sex|
+-----+---+-----+---+
|  Sam| 28| 88.5|  M|
|Flora| 28| 90.6|  F|
|  Mey|  1| null|  M|
|Chery|  7| 80.2|  F|
+-----+---+-----+---+
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值