具有三个条件的pyspark df.withColumn
Posted
技术标签:
【中文标题】具有三个条件的pyspark df.withColumn【英文标题】:pyspark df.withColumn with three conditions 【发布时间】:2019-11-11 12:27:48 【问题描述】:我有两列分别代表'TeamName'
和'MatchResult'
,例如:
ManCity L
Liverpool D
Arsenal W
我正在尝试根据不同足球队的比赛结果创建代表'Points'
的第三列。所以赢3分,平1分,输0分
我尝试过使用 when 和 if 的函数 .withColumn
,但无法正确获取 syntax
。
非常感谢您抽出宝贵时间
ManCity L 0
Liverpool D 1
Arsenal W 3
【问题讨论】:
【参考方案1】:你可以使用:
from pyspark.sql.functions import when, col
df = df.withColumn("points", when(col("MatchResult") == "W", 3).when(col("MatchResult") == "D", 1).otherwise(0))
【讨论】:
首先,感谢您的回答,我导入了函数(来自 pyspark.sql.functions import col, expr, when)。我可能会错过其他我尝试过的 sintaxis 的东西,这就是即将发生的事情。 AttributeError: 'NoneType' 对象没有属性 'withColumn' AttributeError Traceback (最近一次调用最后)dfHT
?是NoneType
,请检查是否与您在原问题中提到的数据框相同
dfHT 是我使用函数 select 过滤数据创建的一个新数据框,因为初始数据都在同一行和三列中(H 代表主队获胜时,D 代表何时当客队获胜时有平局和A)即/ 曼城 / 利物浦 / H / -- / 利物浦 / 阿森纳 / D / -- / 阿森纳 / 曼城 / A / --
@ruben.lfdz 请打印该变量并将输出粘贴到您的问题中
我不知道如何,但我在创建它时通过添加 display(dfHT) 设法对其进行了整理。感谢您的宝贵时间以上是关于具有三个条件的pyspark df.withColumn的主要内容,如果未能解决你的问题,请参考以下文章