Spark Scala转Python代码报错:'Column' object is not callable
错误原因及解决办法
错误原因
Spark的Scala API与Python API在Column方法命名上存在差异:Scala中用divide()实现列除法,但Python的Column对象并没有这个方法,你直接照搬Scala的方法名,就会触发TypeError: 'Column' object is not callable错误。
解决办法
Python中实现列除法有两种等价写法:
- 使用除法运算符
/(最简洁):col("Masse hydrique") / lit(100) - 使用Column类的
div()方法:col("Masse hydrique").div(lit(100))
验证示例
可以用以下代码快速验证修复效果:
from pyspark.sql import SparkSession from pyspark.sql.functions import col, lit # 初始化Spark会话 spark = SparkSession.builder.appName("div_test").getOrCreate() # 创建测试数据 test_df = spark.createDataFrame([(30,), (60,), (90,)], ["Masse hydrique"]) # 应用除法转换 result_df = test_df.withColumn("Masse hydrique_norm", col("Masse hydrique") / lit(100)) result_df.show()
输出结果会正常显示归一化后的数值:
+---------------+-----------------------+ |Masse hydrique|Masse hydrique_norm| +---------------+-----------------------+ | 30| 0.3| | 60| 0.6| | 90| 0.9| +---------------+-----------------------+
内容的提问来源于stack exchange,提问作者Marc Le Bihan
相关产品推荐
相关产品推荐

