如何将多个列名重命名为单个列?

时间:2019-10-09 06:21:00

标签: python pyspark pyspark-dataframes

我有一个表,该表的列为[col1,col2,col3 .... col9]。 我想将所有列数据合并为一列作为python中的col吗?

3 个答案:

答案 0 :(得分:2)

from pyspark.sql.functions import concat

values = [('A','B','C','D'),('E','F','G','H'),('I','J','K','L')]
df = sqlContext.createDataFrame(values,['col1','col2','col3','col4'])
df.show()

+----+----+----+----+
|col1|col2|col3|col4|
+----+----+----+----+
|   A|   B|   C|   D|
|   E|   F|   G|   H|
|   I|   J|   K|   L|
+----+----+----+----+

req_column = ['col1','col2','col3','col4']
df = df.withColumn('concatenated_cols',concat(*req_column))
df.show()

+----+----+----+----+-----------------+
|col1|col2|col3|col4|concatenated_cols|
+----+----+----+----+-----------------+
|   A|   B|   C|   D|             ABCD|
|   E|   F|   G|   H|             EFGH|
|   I|   J|   K|   L|             IJKL|
+----+----+----+----+-----------------+

答案 1 :(得分:1)

使用Spark SQL

new_df=sqlContext.sql("SELECT CONCAT(col1,col2,col3,col3) FROM df")

使用Non Spark SQL方式可以使用Concat函数

new_df = df.withColumn('joined_column', concat(col('col1'),col('col2'),col('col3'),col('col4'))

答案 2 :(得分:0)

在Spark(pySpark)中,由于某种原因,没有对现有数据的编辑。您可以做的是创建一个新列。请检查以下链接。

How do I add a new column to a Spark DataFrame (using PySpark)?

使用 UDF函数,您可以连续汇总/合并所有这些值,并将其作为单个值返回。

请注意,聚合时请注意以下数据问题

  1. 空值
  2. 类型不匹配
  3. 字符串编码问题