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

PySpark中基于metric列过滤值创建新列k的实现问题

修正PySpark DataFrame新增列k的代码实现

原代码的错误点

  • when函数语法错误:正确调用方式是when(条件表达式, 结果值),你错误地将条件和结果包装成元组传入,导致语法不合法。
  • 引用错误列进行数值计算:你使用了字符串类型的metric列做除法运算,这会引发类型错误,应该使用数值列(根据你的代码逻辑推断是x列)。
  • 数值写法错误:Python中小数点是.而非逗号,2,54会被解析为元组,导致计算逻辑错误。
  • 空值返回错误:需求要求其他情况返回空值,你返回的是空字符串' ',不符合要求,应该返回None(用lit(None)实现)。

修正后的代码

首先导入必要的PySpark函数:

from pyspark.sql.functions import col, when, lit

然后执行列新增逻辑:

dataframe = dataframe.withColumn(
    'k',
    when(col('metric') == 'M', col('x') / 10)
    .when(col('metric') == 'I', col('x') / 10 * 2.54)
    .otherwise(lit(None))
)

运行结果

+---+-------+-------+------+---+---+-----+
| ID|   NAME|college|metric|  x|  y|    k|
+---+-------+-------+------+---+---+-----+
|  1|   Amit|     DU|     I|  8|  6|2.032|
|  2|  Mohit|     DU|     I|  4|  2|1.016|
|  3| rohith|    BHU|     I|  5|  3|1.27 |
|  4|sridevi|    LPU|     I|  1|  6|0.254|
|  1| sravan|   KLMP|     M|  2|  4|0.2  |
|  5|gnanesh|    IIT|     M|  6|  8|0.6  |
|  6|gnadesh|    KLM|     c| 10|  9| null|
+---+-------+-------+------+---+---+-----+

内容的提问来源于stack exchange,提问作者Gaaaa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:50:52