簡體   English   中英

如何將多個列名重命名為單列?

[英]How to rename multiple column names as single column?

我有一個包含列 [col1, col2, col3.... col9] 的表。 我想在 python 中將所有列數據合並為一列作為 col?

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|
+----+----+----+----+-----------------+

使用火花 SQL

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

使用非 Spark SQL 方式,您可以使用 Concat function

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

由於某些原因,在 Spark(pySpark) 中,沒有對現有數據進行編輯。 您可以做的是創建一個新列。 請檢查以下鏈接。

如何向 Spark DataFrame(使用 PySpark)添加新列?

使用UDF function ,您可以將所有這些值聚合/組合成一行並將您作為單個值返回。

幾點注意事項,聚合時請注意以下數據問題

  1. Null 值
  2. 類型不匹配
  3. 字符串編碼問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM