我希望将PySpark数据帧的多列合并到StructType
的一列中。
假设我有一个这样的数据框:
columns = ['id', 'dogs', 'cats']
vals = [(1, 2, 0),(2, 0, 1)]
df = sqlContext.createDataFrame(vals, columns)
我希望生成的数据框类似于此(不是像它实际打印的那样,而是让您了解如果您不熟悉StructType的意思):
id | animals
1 | dogs=2, cats=0
2 | dogs=0, cats=1
现在,我可以完成以下任务:
StructType(
[StructField('dogs', IntegerType(), True),
[StructField('cats', IntegerType(), True)
)
在我的udf
末尾,我宁愿只使用一个函数来完成它。如果不存在,我会感到惊讶。
答案 0 :(得分:2)
如果您需要 I'm getting the error 1) JavascriptController#show When the javascript
can't be found returns an error
Failure/Error: javascript = Javascript.find(params[:id])
ActiveRecord::RecordNotFound:
Couldn't find Javascript with 'id'=blahdeblah
列:创建以列名作为键的文字列,然后使用create_map
函数构造所需的地图列:
map
如果您需要from pyspark.sql.functions import create_map, lit
new_df = df.select(
'id',
create_map(lit('dogs'), 'dogs', lit('cats'), 'cats').alias('animals')
# key : val, key : val
)
new_df.show(2, False)
#+---+----------------------+
#|id |animals |
#+---+----------------------+
#|1 |[dogs -> 2, cats -> 0]|
#|2 |[dogs -> 0, cats -> 1]|
#+---+----------------------+
new_df.printSchema()
#root
# |-- id: long (nullable = true)
# |-- animals: map (nullable = false)
# | |-- key: string
# | |-- value: long (valueContainsNull = true)
列:请使用struct
函数:
struct