Pyspark如何在DataFrame中计算arccos、arcsin、arctan反三角函数值
Pyspark DataFrame 反三角函数计算方案
前置说明
Pyspark 内置的acos(反余弦)、asin(反正弦)、atan(反正切)函数默认输入参数为弧度值,且acos、asin的有效输入范围为[-1, 1],超出范围会返回null。
如果你的Angle A列存储的是原始角度值(如30、15、45、60),需要先做值域转换后再计算,或者确认你的实际计算逻辑是「先对角度求三角函数值,再用反三角函数还原」。
完整实现代码
首先导入依赖函数:
from pyspark.sql import functions as F
场景1:Angle A为归一化到[-1,1]的三角函数输入值
# 替换为你自己的原始DataFrame即可 df = spark.createDataFrame([(0.5,), (0.2588,), (0.7071,), (0.8660,)], ["Angle A"]) # 计算三类反三角函数生成新列,默认输出为弧度 df_result = df.withColumn("arccos_A", F.acos(F.col("Angle A"))) \ .withColumn("arcsin_A", F.asin(F.col("Angle A"))) \ .withColumn("arctan_A", F.atan(F.col("Angle A"))) # 若需要将结果转换为角度,追加以下转换逻辑 df_result = df_result.withColumn("arccos_A_degree", F.degrees(F.col("arccos_A"))) \ .withColumn("arcsin_A_degree", F.degrees(F.col("arcsin_A"))) \ .withColumn("arctan_A_degree", F.degrees(F.col("arctan_A"))) df_result.show()
场景2:Angle A为原始角度值,需先求对应三角函数值再反算
# 测试数据为30、15、45、60等原始角度 df = spark.createDataFrame([(30,), (15,), (45,), (60,)], ["Angle A"]) # 先转弧度计算三角函数值,再用反三角函数计算后转角度输出 df_result = df.withColumn("angle_rad", F.radians(F.col("Angle A"))) \ .withColumn("arccos_A_degree", F.degrees(F.acos(F.cos(F.col("angle_rad"))))) \ .withColumn("arcsin_A_degree", F.degrees(F.asin(F.sin(F.col("angle_rad"))))) \ .withColumn("arctan_A_degree", F.degrees(F.atan(F.tan(F.col("angle_rad"))))) df_result.show()
核心函数说明
F.radians():将角度值转换为弧度值F.degrees():将弧度值转换为角度值F.acos()/F.asin()/F.atan():对应反余弦、反正弦、反正切计算,返回结果为弧度
内容的提问来源于stack exchange,提问作者elokema
相关产品推荐
相关产品推荐

