【问题标题】:How to rename multiple column names as single column?如何将多个列名重命名为单列?
【发布时间】:2020-02-06 10:24:12
【问题描述】:

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

【问题讨论】:

标签: python pyspark pyspark-dataframes


【解决方案1】:
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|
+----+----+----+----+-----------------+

【讨论】:

    【解决方案2】:

    使用 Spark SQL

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      使用 UDF 函数,您可以将所有这些值聚合/组合成一行并将您作为单个值返回。

      几个注意事项,聚合时请注意以下数据问题

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

      【讨论】:

        猜你喜欢
        • 2014-01-26
        • 1970-01-01
        • 2021-12-03
        • 2019-06-30
        • 1970-01-01
        • 1970-01-01
        • 2018-01-25
        • 2023-01-10
        相关资源
        最近更新 更多