Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用pyspark对数据帧的多列进行Concat_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Apache spark 使用pyspark对数据帧的多列进行Concat

Apache spark 使用pyspark对数据帧的多列进行Concat,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,假设我有一个列列表,例如: col_list=['col1','col2'] df=spark.read.json(路径到文件) 打印(df.列) #['col1','col2','col3'] 我需要通过连接col1和col2来创建一个新列。我不想在连接时硬编码列名,但需要从列表中选择它 如何执行此操作?您可以使用将列表中指定的列连接起来。继续将它们作为参数传递 从pyspark.sql.functions导入concat #创建示例数据帧 值=[('A1',11,'A3','A4'),('

假设我有一个列列表,例如:

col_list=['col1','col2']
df=spark.read.json(路径到文件)
打印(df.列)
#['col1','col2','col3']
我需要通过连接
col1
col2
来创建一个新列。我不想在连接时硬编码列名,但需要从列表中选择它

如何执行此操作?

您可以使用
列表中指定的列连接起来。继续将它们作为参数传递

从pyspark.sql.functions导入concat
#创建示例数据帧
值=[('A1',11,'A3','A4'),('B1',22,'B3','B4'),('C1',33,'C3','C4')]
df=sqlContext.createDataFrame(值,['col1','col2','col3','col4'])
df.show()
+----+----+----+----+
|col1 | col2 | col3 | col4|
+----+----+----+----+
|A1 | 11 | A3 | A4|
|B1 | 22 | B3 | B4|
|C1 | 33 | C3 | C4|
+----+----+----+----+
concat()。如果您有一个列表,您可以使用
*
取消列表。所以
(*['col1','col2'])
返回
('col1','col2')

col_list=['col1','col2']
df=df.withColumn('连接列',连接列(*列列表))
df.show()
+----+----+----+----+-----------------+
|col1 | col2 | col3 | col4 |串联| u cols|
+----+----+----+----+-----------------+
|A1 | 11 | A3 | A4 | A111|
|B1 | 22 | B3 | B4 | B122|
|C1 | 33 | C3 | C4 | C133|
+----+----+----+----+-----------------+

我们可以用一个分隔符吗between@G.v.Sridhar您可以使用类似于concat(col(“a”)、lit(“”)、col(“b”))的内容,在lit()中您可以放置分隔符。如果您需要分隔符,请使用concat_ws,如下所示(*是分隔符):df=df.withColumn('concatated_cols',concat_ws('*',col list))