You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:36:02