当前位置: 首页 > 知识库问答 >
问题:

多个列上的pyspark条件和返回新列

柳胜
2023-03-14

我用的是spark 2.1,脚本是pyspark。请帮我一下,因为我被困在这里了。

问题陈述:根据多列的条件创建新列

输入<code>数据帧<code>如下

FLG1 FLG2 FLG3

T     F     T

F     T     T

T     T     F

现在我需要创建一个新列作为FLG,我的条件是如果FLG1==T

上面的dataframe被认为是DF

下面是我尝试过的代码片段

DF.withColumn("FLG",DF.select(when(FLG1=='T' and (FLG2=='F' or FLG2=='T','F').otherwise('T'))).show()

没有工作,我得到的名字是没有定义的

请帮助我跨过这个障碍


共有1个答案

洪河
2023-03-14

试试下面的方法应该可以

from pyspark.sql.functions import col, when, lit
DF.withColumn("FLG", when((col("FLG1")=='T') & ((col("FLG2")=='F') | (col("FLG2")=='T')),lit('F')).otherwise(lit('T'))).show()
 类似资料:
  • 我用这个最小的可复制的例子来说明我的问题。我已经设法解决了这个问题,但我确信还有更优雅的编码方式。 这个问题是关于基于多个标准的二元分类。为了满足要求,一个甜甜圈(编码1)需要至少3(或更多)的分数:“a”标准项中的至少一个、“B”标准项中的至少两个和“C”标准项中的至少三个。如果不满足这些要求,将不奖励甜甜圈(编码0)。

  • 我使用的是spark 2.1,用法是pyscripting 问题陈述:有一个场景,需要传递多个列作为输入,并返回一列作为输出 a b c S S S S NS NS S NS S S S NS 新南威尔士州 我的输出必须如下所示 a b c d S S S S S NS NS NS S NS S S S,S,NS,NS NS S NS NS 我试图注册一个UDF来传递这3列[a, b, c]作为输

  • 我有一个dataframe,我想在其上使用apply函数根据现有数据生成两个新列。我收到此错误: 启动DF: 希望DF:

  • 问题内容: 我有一个数据集,其中我试图确定每个人的危险因素数量。所以我有以下数据: 每个属性(年龄,吸烟者,糖尿病)都有自己的条件来确定是否是危险因素。因此,如果年龄> = 45,则是一个危险因素。吸烟者和糖尿病为“ Y”是危险因素。我想要添加一列,以根据这些条件总计每个人的风险因素数量。因此数据如下所示: 我有一个样本数据集,我在Excel中鬼混,而我这样做的方式是使用COUNTIF公式,如下所

  • 我有一个PySpark Dataframe,它有两列(,,其类型为),其值为或。我正在尝试添加一个新列,这是这两个列的总和。我遵循Pyspark中的示例:在UDF中传递多列 这显示了一系列的< code>NULL,而不是我期望的结果。 我尝试了以下任何一种方法,以查看数据类型是否存在问题 仍然得到空值。 我试着移除阵列: 这可以正常工作并显示 我试着移除UDF,但是离开了阵列: 这可以正常工作并显

  • 我有以下代码: 我的问题是我想让我的列表按多个东西排序: 1。)将它们分组为未来事件和过去事件(通过检查ystem.current毫秒()是否大于结束时间戳)2。)通过开始升序排序未来事件3。)通过结束降序排序过去事件 我可以用Java 8 Lambda来做这件事吗?或者我需要另一种排序项目的方法吗?