Pyspark 从同一数据帧的另一列在数据帧中添加列
我有一个Pyspark数据帧Pyspark 从同一数据帧的另一列在数据帧中添加列,pyspark,spark-dataframe,Pyspark,Spark Dataframe,我有一个Pyspark数据帧df,如下所示: +---+----+---+ | id|name| c| +---+----+---+ | 1| a| 5| | 2| b| 4| | 3| c| 2| | 4| d| 3| | 5| e| 1| +---+----+---+ 我想添加一列match_name,该列的值来自name列,其中id==c 是否可以使用函数withColumn() 目前,我必须创建两个数据帧,然后执行连接。 这在大数据集上效率很低
df
,如下所示:
+---+----+---+
| id|name| c|
+---+----+---+
| 1| a| 5|
| 2| b| 4|
| 3| c| 2|
| 4| d| 3|
| 5| e| 1|
+---+----+---+
我想添加一列match_name
,该列的值来自name
列,其中id==c
是否可以使用函数withColumn()
目前,我必须创建两个数据帧,然后执行连接。
这在大数据集上效率很低
预期产出:
+---+----+---+----------+
| id|name| c|match_name|
+---+----+---+----------+
| 1| a| 5| e|
| 2| b| 4| d|
| 3| c| 2| b|
| 4| d| 3| c|
| 5| e| 1| a|
+---+----+---+----------+
是的,这是可能的,因为:
如果不满足条件,您也可以使用提供不同的值。是的,可以使用:
如果不满足条件,您也可以使用提供不同的值。可能与
c
重复??原始的match
列在哪里???c
和match
是否相同?我将其更改为简单无答案?可能与c
重复??原始的match
列在哪里???c
和match
是相同的,我将其更改为简单无答案?。。。快几秒钟(+1):)`从pyspark.sql导入函数为func df=spark.createDataFrame([(1,'a',5),(2,'b',4),(3,'c',2),(4,'d',3),(5,'e',1)],['id',name',c'])condition=func.col(“id”)==func.col(“c”)result=df with column(“match_name”,func.when(condition,func.col(“name”))result.show()`先生,我想记下id为3
的列的名称,并将其添加到id为1
@JugrajSingh 1)的行中。请不要在注释中添加长代码片段-它们是不可读的2)当然可以,因为在这些(新)数据中,条件是不匹配的!我已经确认,您最初在您的帖子中提供的数据的解决方案确实如所示和预期……同意并表示歉意,但我的要求不同。它是用可能的匹配名称填充所有行,就像join一样。。。。快几秒钟(+1):)`从pyspark.sql导入函数为func df=spark.createDataFrame([(1,'a',5),(2,'b',4),(3,'c',2),(4,'d',3),(5,'e',1)],['id',name',c'])condition=func.col(“id”)==func.col(“c”)result=df with column(“match_name”,func.when(condition,func.col(“name”))result.show()`先生,我想记下id为3
的列的名称,并将其添加到id为1
@JugrajSingh 1)的行中。请不要在注释中添加长代码片段-它们是不可读的2)当然可以,因为在这些(新)数据中,条件是不匹配的!我已经确认,您最初在您的帖子中提供的数据的解决方案确实如所示和预期……同意并表示歉意,但我的要求不同。就像join一样,用可能的匹配名称填充所有行。
from pyspark.sql.functions import when, col
condition = col("id") == col("match")
result = df.withColumn("match_name", when(condition, col("name"))
result.show()
id name match match_name
1 a 3 null
2 b 2 b
3 c 5 null
4 d 4 d
5 e 1 null