python新建一个类有map成员_python – pyspark:从现有列创建MapType列

该博客讨论了如何在Python中使用pyspark从现有数据帧的列创建MapType列。示例展示了如何从包含'metric1'、'metric2'和'metric3'列的DataFrame构建MapType,其中列名作为键,对应的值作为值。
摘要由CSDN通过智能技术生成

我需要根据现有列爬行新的Spark DF MapType列,其中列名是键,值是值.

作为例子 – 我有这个DF:

rdd = sc.parallelize([('123k', 1.3, 6.3, 7.6),

('d23d', 1.5, 2.0, 2.2),

('as3d', 2.2, 4.3, 9.0)

])

schema = StructType([StructField('key', StringType(), True),

StructField('metric1', FloatType(), True),

StructField('metric2', FloatType(), True),

StructField('metric3', FloatType(), True)])

df = sqlContext.createDataFrame(rdd, schema)

+----+-------+-------+-------+

| key|metric1|metric2|metric3|

+----+-------+-------+-------+

|123k| 1.3| 6.3| 7.6|

|d23d| 1.5| 2.0| 2.2|

|as3d| 2.2| 4.3| 9.0|

+----+-------+-------+-------+

我已经到目前为止,我可以从这里创建一个structType:

nameCol = struct([name for name in df.columns if ("metric" in name)]).alias("metric")

df2 = df.select("key", nameCol)

+----+-------------+

| key| metric|

+----+-------------+

|123k|[1.3,6.3,7.6]|

|d23d|[1.5,2.0,2.2]|

|as3d|[2.2,4.3,9.0]|

+----+-------------+

但我需要的是一个带有MapType的度量列,其中键是列名:

+----+-------------------------+

| key| metric|

+----+-------------------------+

|123k|Map(metric1 -> 1.3, me...|

|d23d|Map(metric1 -> 1.5, me...|

|as3d|Map(metric1 -> 2.2, me...|

+----+-------------------------+

如何提示我如何转换数据?

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值