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|
+-----+---+-----+---+
### 编程中保留小数位数的语法与示例 #### PHP 中使用 `number_format` 函数 在 PHP 中,可以通过 `number_format` 函数实现对浮点数的小数位数进行控制。该函数允许指定要保留小数位数以及自定义小数点和千位分隔符。 以下是具体用法及其示例: ```php <?php // 基本用法 $number = 1234.5678; $formatted_number = number_format($number, 2, '.', ','); echo $formatted_number; // 输出: 1,234.57 [^1] // 不带千位分隔符的情况 $simple_formatted_number = number_format($number, 2); echo $simple_formatted_number; // 输出: 1234.57 ?> ``` 上述代码展示了如何通过 `number_format` 将 `$number` 的值格式化为两位小数,并分别演示了带有千位分隔符和不带千位分隔符的结果。 #### SQL Server 中使用 `ROUND` 函数 对于数据库操作中的数值处理,在 Microsoft SQL Server 中可以利用 `ROUND` 函数来完成小数位数保留功能。其主要作用是对数值表达式按指定位数进行四舍五入或其他方式的操作。 下面给出一段基于 MSSQL 的实例说明: ```sql -- 定义变量并赋初值 DECLARE @value DECIMAL(10, 4) = 9876.54321; -- 调整至特定精度 SELECT ROUND(@value, 2); -- 结果返回:9876.54 [^3] ``` 此脚本先声明了一个具有四位小数部分的数据类型存储单元,接着调用了 `ROUND()` 方法将其精确到仅剩两个有效数字位于小数点之后的位置上。 --- #### 总结 不同编程环境提供了各自的工具集用于解决类似的业务逻辑需求——即调整显示或者计算过程中涉及的实际数据长度问题。无论是前端展示层面上考虑用户体验而做的美化修饰工作(如货币金额),还是后台运算环节里追求更高的准确性标准,则都需要灵活运用这些基础知识点加以实践应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值