我有一个包含列 [col1, col2, col3 .... col9] 的表。我想在python中将所有列数据合并为一列作为col?
问问题
809 次
3 回答
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|
+----+----+----+----+-----------------+
于 2019-10-09T07:00:03.237 回答
1
使用 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'))
于 2019-10-09T08:39:18.330 回答
0
由于某些原因,在 Spark(pySpark) 中,没有对现有数据进行编辑。您可以做的是创建一个新列。请检查以下链接。
如何向 Spark DataFrame 添加新列(使用 PySpark)?
使用UDF 函数,您可以将所有这些值聚合/组合成一行并将您作为单个值返回。
几点注意事项,聚合时请注意以下数据问题
- 空值
- 类型不匹配
- 字符串编码问题
于 2019-10-09T06:58:49.940 回答